Extract JSON marshalling

TO prepare the client to support all different formats (text and
protobuf specifically), this commit extracts the depreacted JSON format
from the core code.
Rename special name label to __name__

As the metric name is just a special label, it needs to be distinguished
from custom user labels with the name "name".

This reflects the breaking JSON change made in [1].

[1]: https://github.com/prometheus/client_golang/commit/bb957bc
Prevent usage of label names starting with __
Allow labels configuration in Rack middleware
Always set a label builder block
Merge pull request #4 from porras/feature/rack-collector-label-configuration

Allow labels configuration in Rack middleware