This patch cleans up the metrics to make it easier to write metrics and the mbeans.
Added a registry to the metrics so that the pushing of metrics can be done automatically.
Also this registry is used to create dynamic mbeans from metrics.
Added the dynamic mbeans base and changed the existing activity beans to use them.
Also cleanup the names of the mbeans.
Hence each time a new metrics is added to an existing set of metrics, one needs to simply do
1) add the metrics to a holder class (such as NameNodeMetrics
2) add code to update the metrics.
The metrics will be pushed as per metrics config and it will also be published via mbeans.
(Previous to this patch also has to add a line of code to push and add new mbean entries).
If one is adding a new category of metrics (ie for which a holder class does not exist) then
1) create metrics holder (see NameNodeMetrics as an example)
2) create mbean (see NameNodeActivityMBean as an example)