Metrics

This is the initial version of the metrics API @rcrichton  and @devcritter please take a look and tell me what you think
I still think this auth code is a little funky. The `results` variable is being used to store both channels and the aggregate results. This is not good. Also I don't think the aggregation is ever run for non-admin users.

What we want to do there is if the user is an admin then then continue as normal. If they are non-admin then we want to check that they have access to the channel. If we get a channel back on line 82 then they are allowed to access the channel and we can then run the aggregation. The if statement on line 94 should be moved up into this auth checking section.