support submitting important statsd metrics
cache leaves and branches instead of always regenerating

faster response time, cause cache get/set is a few ms,
generating the leaves is about 100ms, branches about 1s.
bugfix: otherwise we'd hand graphite-api's functions []

which results in TypeError: reduce() of empty sequence with no initial
value"}

see https://github.com/brutasse/graphite-api/issues/29
more extensive debugging and instrumentation
describe stdout/logging problem, pep8
better statsd name
cache key only depends on query pattern, not start/end

without this fix, it would basically add to cache for no reason,
fail to get any kind of hit rate, and do the work over again.