Modifications to prepare for version 3. 

This change marks the dependencies as `provided` or `optional` where appropriate to do so.  This will keep one from accidentally upgrading someone's version of metrics. 

The other thing that this change does is it splits the metrics libraries into subprojects.  The changes between metrics2 and metrics3 are fairly radical, and this will allow for namespace separation.