Add new signature helpers.

Various next-generation clean-ups: DO NOT MERGE!

This should *NOT* be merged; it needs more cleanups and tests.  Plus,
Prometheus cannot consume this yet!

1. The output format is now versioned per the Semantic Versioning scheme.  Mainline Prometheus will be adapted to use differing consumption methodologies as the generators' formats evolve to support legacy clients.

2. The telemetry outputter now supports GZIP output encoding.  In sample runs, this cuts the output size in half.

3. Basic sanity tests are added for registration with varying levels of pedanticness.

4. We have support for base labels in the registration and emission phases.

= Next Iterations

1. Further cleanups and refactorings.

2. Label-orientation in metric mutators.

Example output:

```json
[
  {"baseLabels":{"name":"rpc_calls_bar_total"},"docstring":"RPC calls for bar service.","metric":{"type":"counter","value":193}},
  {"baseLabels":{"name":"rpc_calls_foo_total"},"docstring":"RPC calls for foo service.","metric":{"type":"counter","value":193}},
  {"baseLabels":{"name":"rpc_calls_zed_total"},"docstring":"RPC calls for zed service.","metric":{"type":"counter","value":193}},
  {"baseLabels":{"name":"rpc_latency_bar_microseconds"},"docstring":"RPC latency for bar service.","metric":{"type":"histogram","value":{"0.010000":"76.416335","0.050000":"83.609304","0.500000":"98.861706","0.900000":"109.240804","0.990000":"113.873919"}}},
  {"baseLabels":{"name":"rpc_latency_foo_microseconds"},"docstring":"RPC latency for foo service.","metric":{"type":"histogram","value":{"0.010000":"0.888932","0.050000":"4.492672","0.500000":"95.139475","0.900000":"172.498287","0.990000":"195.552695"}}},
  {"baseLabels":{"name":"rpc_latency_zed_microseconds"},"docstring":"RPC latency for zed service.","metric":{"type":"histogram","value":{"0.010000":"0.026407","0.050000":"0.050542","0.500000":"0.685440","0.900000":"2.335398","0.990000":"4.313727"}}}]