This adds GraphTraits specializations for Value type that provide
GraphTraits interface to operands (forward direction) or uses (inverse
direction) of a given Value. This allows applying graph algorithms to
Note that walking this graph in the forward direction inherently
requires dynamically casting each node to User, due to the underlying
representation of the edges.
The specializations are put in IR/User.h to avoid introducing a
cyclical dependency between IR/Value.h and IR/User.h.