root testsuite: Took a stab at what I might have actually been thinking of for foo13.rs.
root testsuite: add `foo32_fine.rs` to test suite.  It is an attempt
to identify a case where I need the dont-care dataflow analysis.
rust-needsdrop: flow-sensitive filter of needs-drop values that are actually non-drop variants.

The pieces of this puzzle are:

  * Expanded the `expr_use_visitor::Delegate` in `gather_loans` to
    pass through all match variants, regardless of whether they are
    borrowing or consuming.  Track the match mode (borrowing, copying,
    moving) in the `move_data::VariantMatch`.

  * In light of the above: we continue to filter out borrowing
    variants when updating the drop obligations (since a borrowing
    match is not consuming the input, while a moving match does, and
    its better for the overall results to continue having the
    needs_drop dataflow track that), but we also track when the
    particular variant actually implies that the drop is unnecessary:
    the latter is the `ignore_drop` state.

  * Added a simple dataflow analysis based on `ignore_drop`; that is
    `dfcx_ignore_drop`, and included it in the graphviz
    instrumentation.

  * In `check_drops`, if we encounter a claimed inconsistency on some
    control flow edge, check the `ignore_drop` state on the edge
    source node; if this drop is irrelevant because the variant is
    non-needs-drop on that control-flow branch, then we do not need to
    warn about this particular inconsistency, so skip it.