Add a short new section showing how assignment to a mutable variable
causes an existing *owned* binding to be freed immediately. Create a new
code sample and a new diagram to illustrate the behavior.
Fixes#4001.
- Introduce diagrams into 17.05 to break up the wall of text and make it
easier to visualize.
- Extract the state machine code to make it easier to reference.
- Standardize on `await` instead of `.await` for inline code references.
- Move note about `race` and `select` up to 17.01 since the text now
references it there, and update the text in 17.03 to account for
already having introduced the function.
- Fix up a number of code samples to avoid showing `extern crate trpl;`.
- Rewrite the transition between 17.04 and 17.05 to account for having
restructured the chapter.
- Rework the example code in 17.05 to refer to the `page_title` example
from the rewritten 17.01 instead of the (now-removed) `hello`.
- When discussing the `Future::poll` method, explicitly address the `cx`
parameter: note what it is used for, and then move on.
- Set their view boxes to the original height and width, so they are
guaranteed to present correctly.
- For Figure 17-02, use the trick of adding a hidden node and hidden
arrow to it in “Task 2” to align the two boxes.
- Swap the ordering to match the order in the text (concurrent is first,
at least for now).
- Make them go left-to-right instead of top-to-bottom for compactness in
the text.
- Fix rendering issues resulting from the VS Code extension doing things
that normal `dot` does not, for who knows what reasons.
I cannot for the life of me get the arrow currently pointing from a ->
10 to point from 10 -> a instead, dir=back has no effect, changing the
order makes the whole graph go kablooey, i even tried hand-editing the
svg and i cannot