new filter, output, metrics reporter, refactoring

metrics reporting is now done via the BundleReporter. it is based
on the metrics 2 ganglia reporter wrt to naming scheme, but has no
idea what a ganglia is. The bundle reporter puts various components
such as name, group, units, etc into pre-configured fields and sends
them to a configurable bundle sink. This can be a tree, file, etc.

relatedly, the new output is a ganglia output. it is based more on
the metrics 3 ganglia reporter, but also supports metrics-reporter-
config eqsue gmond.conf parsing. It reads values from pre-configured
fields and uses them to construct arbitrary ganglia messages. It has
no dependencies on metrics apis.

they are used together by default to preserve previous behavior, but
as the ganglia output supports a bundle filter field (it extends the
new AbstractFilteredOutput), arbitrarily fine grained filtering and
mutations can now be performed to eg. filter out sub-metrics of
timers, prefix names, alter values.

there is now a ValueFilterNot which has reasonable semantics to the
extent possible when dealing with nullity as a pseudo true/false.

TaskDataOutput now abstracts away slightly more otherwise repetitive logic.