WIP: Extract core Prometheus value decoders.

Bernerd had suggested extracting the value decoders and bundling them
into the client library.  After some reflection, I tend to agree with
this, since we can start breaking the onion of Prometheus itself and
localize the protocol management into its own scope.

A couple of major changes since moving:

- Protocol 0.0.2 has moved to a struct{} so that our tests can perform
  value matching, which cannot be done against function literals.  The
  discriminator technically lacked tests for 0.0.2 before!

- Processing now acquires options to dictate behavioral changes of
  metrics bodies.

- Processing no longer closes the stream, thusly returning this to the
  hands of the caller.

- Process() has been renamed to ProcessSingle to better convey that it
  works on complete message bodies.  This paves the way for better
  streaming payload support that the next API version will offer.

Pending Problems:

- The decoding package still references a couple of core Prometheus
  packages.  This ought to be fixed.  I want to sleep on this now.

/CC: @bernerdschaefer