Add a `graphviz` crate for making .dot files to layout and render graphs.
Updated maybe_owned_vec with review feedback.

Namely:

 * Added conversion traits both to and from the various vector types,
   analogous to how `str::MaybeOwned` works with `str::IntoMaybeOwned`
   and `str::Str`.  This led me to add the `FixedLen` variant of
   `MaybeOwnedVector` for interoperability with `std::slice`.

 * Revised client example code to make use of `into_maybe_owned`

 * Added implementations of `Show` and `CloneableVector` for
   `MaybeOwnedVector`.

 * As suggested by kballard, added `into_vec` method that is analogous
   to `CloneableVector::into_owned` except it produces a `Vec` rather
   than a `~[T]`.
Placate rustdocs testable-by-default code blocks.
Graphviz based flow graph pretty-printing.

Passing `--pretty=flowgraph` makes rustc print a control flow graph.

In pratice, you will also need to pass the additional options:

 * `-o <FILE>` to emit output to a `.dot` file for graphviz, and
 * `--pretty-node=<ID>` to specify the block

(You can only print the flow-graph for a particular block in the AST.)

These changes do not generalize the rest of the pretty-printer to
support the `--pretty-node=<ID>` option for printing subtrees of the
AST, but that is obviously a potential future feature that we could
add on.  It is orthogonal to flow-graph printing, though.
Checkpoint some sketchy unit tests for flowgraph pretty printing.