use-def, def-use chains for byecode-level: ProdConsAnalyzer

As covered in Sec. 8.10 of
  Steven S. Muchnick.
  Advanced compiler design and implementation.
  Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1997.
BCodeOpt building block: DisambiguatingAnalyzer

In addition to tracking use-def and def-use chains,
a DisambiguatingAnalyzer goes one step further in that
the sources of value received via formal-params are
more accurately tracked.

Details in the documentation for
scala.tools.nsc.backend.bcode.DisambiguatingAnalyzer
BCodeOpt building block: CopyPropagator

Replaces the last link in a chain of data accesses
(involving local-variables only)
by a direct access to the chain-start.

Details in the documentation for
scala.tools.nsc.backend.bcode.CopyPropagator
Level 1 intra-method optimiz: Copy propagation

CopyPropagator rephrases LOAD instructions to re-use (when possible)
the value stored in a local-var with the lowest index.
That way, copies of that same value in other local-vars
may end up being not read anywhere, thus making the local-vars
holding them candidates for dead-store elimination.
TODO bcode.Util and asm.tree.analysis.Frame