Do not fail completely when re-registering metrics with the same name

Due to the way one of our legacy webapps integrates with spring, the spring context file is loaded 2 times instead of one. On the second time, it fails due to an IllegalArgumentException. This bug may be related to the other spring life cycle bug.  This fix allows the reload to occur properly. This also handles more graceful accidental double registration of the same metrics. 

My apologies for the long list of commits. I'm not sure how to reset my fork to your base