tree-vrp.* is large and difficult to follow, in part because it has a
hodgepodge of different interdependent things (value ranges bits,
equivalences stuff, actual value range propagation things, etc etc).
This patch pulls out the value_range functionality into its own files:
value-range.h and value-range.cc.
There are no functional changes, but I did shuffle the order of
functions around for easier reading. While the old tree-vrp.c had
everything spread out, the new value-range.cc file has functions grouped
more or less by functionality (constructors first, setters next,
predicates next, etc).
I did pull out vrp_val* and vrp_operand_equal* because value_range
depends on it. I didn't change the name to avoid churn.
OK pending tests?
Aldy