Tighten a few aspect of Prometheus client use.

Since this library is likely to be one of a user's first entrypoints
for looking into Prometheus, it makes sense to demonstrate the feature
set in a non-contrived way.  To that end, I have offered a few changes
to enhance the experience:

- Take advantage of immutable Metric.Build objects, which can be used
  to generate metrics from a template.

- Retain reference to Metric.Partial to demonstrate the capability of
  retaining a metric if its label-pair values are never subsequently
  altered.

A few other cleanups are provided:

- Extract property and percentile computations into Callable<T>
  factories to reduce amount of boilerplate.