Metric name lambdas

* Adds the ability to use lambdas to set metric names dynamically.
* Allows lambda-functions to determine the key based on the callee object and the arguments passed to the function called.
* Based on the most recent master @aca09cc0d7dfdd9f53a64c0e290454ad2bd54e20
* May require some code refactoring, I'd especially consider this line: `StatsD.increment("#{metric_name.respond_to?(:call) ? metric_name.call(self, args) : metric_name}." + (truthiness == false ? 'failure' : 'success'), sample_rate)`