main reasons behind this:
- make adding/removing tags cheap
- make adding/removing fields cheap
- make parsing cheaper
- make parse -> decorate -> write out bytes metric flow much faster
Refactor serializer to use byte buffer
Previously, the graphite parser would simply overwrite any template that
had an identical filter to a previous template. This included the empty
filter.
Now we will still overwrite, but first we will sort to make sure that
the most "specific" template always matches.
closes#1731
This constitutes a large change in how we will parse different data
formats going forward (for the plugins that support it)
This is working off @henrypfhu's changes.