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 think with the current representation, you could still have a cfgidx that does not map to a bitset, e.g. in the case of a high cfgidx that also maps to unreachable code, and thus `propagate` would never reach it.  So I do not think this can be an assertion, strictly speaking, unless we also required clients to filter out dead code themselves, which I do not want to do (at least, not yet; I may indeed remove unreachable nodes from the graph in some prepass to dataflow later, but I want to try to wait to try to finish nonzeroing destructors before I embark on that task).