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 fix allows the reload to occur properly.

My apologies for the long list of commits. I'm not sure how to reset my fork to your base