Extend --pretty flowgraph=ID to include dataflow results in output.

Use one or more of the following `-Z` flag options to tell the
graphviz renderer to include the corresponding dataflow sets (after
the iterative constraint propagation reaches a fixed-point solution):

  * `-Z flowgraph-print-loans` : loans computed via middle::borrowck
  * `-Z flowgraph-print-moves` : moves computed via middle::borrowck::move_data
  * `-Z flowgraph-print-assigns` : assignments, via middle::borrowck::move_data
  * `-Z flowgraph-print-all` : all of the available sets are included.

Fix #15016.
I don't hate this, but I do think the name is a little weird when it's handling `Code`/`Block`s as well as functions... I don't really know of a better name. The only vaguely reasonable thing I can think of is `flow_unit`, i.e. these are the building blocks of the CFG. But, meh, this isn't just for the CFG.

(Well... it could be moved in to `rustc::middle::cfg` but it seems like this abstraction would be vaguely useful for external tools.)