Add PluginLoader, a super simple plugin framework that allow for dynamically
loading JAR files after startup and searching for plugins that implement a given
abstract class.
Add a unit test with dummy plugin and implementations. The makefile will compile
a plugin jar that the unit test will load at runtime and check for implementations

Signed-off-by: unknown <clarsen@euphoriaaudio.com>
Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add the Annotation class for storing global or timeseries associated notes.
Add TSMeta class for storing metadata associated with a timeseries.
Add UIDMeta class for storing metadata associated with metrics, tagk and tagvs
Add unit tests for the new classes
Thanks to Peter Gotz for Annotations, will add his GraphHandler code later on

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add DateTime utility class that moves the date parsing features out of
GraphHandler and CliQuery where they can be shared by the API and other tools.
Add millsecond absolute timestamp parsing
Add month relative time option with the "n" character that works over 30 day
periods
Refactor the date/time specific calls out of GraphHandler
Modify CliQuery to use the new date/time parsing so folks can now enter relative
or timestamps via the command line
Add unit test class for DateTime.java
Allow override of local timezone via config file

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Fix Config.hasProperty bug where it was throwing an NPE if the entry did not exist instead of returning false
Merge remote branch 'remotes/official/next' into next
Remove HttpQuery.sendJsonArray() and .toJsonArray() as they're replaced by the
JSON class
Refactor HTTP API calls that return JSON to use the JSON class, no behaviors
are changed
Add HttpQuery.getCharset() to parse the proper encoding from the request or use the default UTF-8
Add HttpQuery.getContent() as a helper to decode the request body as a String using the given encoding
Add TestHttpQuery unit test class and quick/simple test for the query parsing methods, need to add tests for the sending methods
Add HttpQuery.getQueryPath() to fetch the path component of the requested URI
Add HttpQuery.explodePath() to fetch the path component of the requested URI
Break shared Netty mock/unit test methods into NettyMocks.java
Add tests for the HttpQuery mime private methods via reflection