Complete rewrite of the exposition library.

This rewrite had may backs and forths. In my git repository, it
consists of 35 commits which I cannot group or merge into reasonable
review buckets. Gerrit breaks fundamental git semantics, so I have to
squash the 35 commits into one for the review.

I'll push this not with refs/for/master, but with refs/for/next so
that we can transition after submission in a controlled fashion.

For the review, I recommend to start with looking at godoc and in
particular the many examples. After that, continue with a line-by-line
detailed review. (The big picture is hopefully as expected after
wrapping up the discussion earlier.)

Change-Id: Ib38cc46493a5139ca29d84020650929d94cac850
Add InstrumentHandlerFunc.

Also, fix seconds to microseconds fot the http instrumentation to
match the metric name.

Fix Desc.String().

Simplify http error display.

Change-Id: Ib7397f4eac1eeed92b291e1c9cc88c080aee99ca
Fix doc comment typo.

Change-Id: I19b4b553b01823da0c1015d779f1f05b2c2cfb5b
Added "callback" metrics, e.g. GaugeFunc.

Change-Id: I449b558207963ce60572bd04c8102f1db684dd4c
Vendorize perks/quantile.

Change-Id: I2b24bddf5a975a46ceb598db328c317982154466
Make the collectorID independent of the desc order.

This is actually the intended behavior, and (as a nice side effect)
makes things cheaper to calculate.

Also, introduce a separator character to avoid hash collisions
(like label values {"ab","c"} vs {"a", "bc"}).

Apply the same principles to signature.go.

Change-Id: I607db544f278ed89684fe5fa11abdbc3e03d3061
Merge branch 'next'.

This flips the switch to the rewritten client_golang/prometheus.

Change-Id: Ic15aba39523636615103b3105cf3a65d40d7d3b1