Fix NPE when using CLI-overridden custom parameters.

If you used -D to override a custom configuration (one not included in Configuration.java), we get a NPE.  This fixes that.

Basically, there is no original to backup, so don't.
mark a todo regarding Metric.Types.
Changes required on existing classes to make them accessible to other packages.
Sample UDP Ingestor.  Needs tests.
move `compile` plugin to parent pom so every module shares the same settings.
merge from master, fixed a conflict in master pom.xml
support bundles of metrics (instead of just one).

Drop and log bundles that cannot be deserialized (like when UDP max packet size is reached, but the sender doesn't know and only sends a partial bundle).
avoid race where multiple threads could get started.
Merge branch 'master' into udp_ingestion
update udp pom
Make AsyncChain more generic

* accepts more generic `AsyncFunction` objects.
* invokes non-threadpool functions on same thread.
* `AsyncChain` implements `AsyncFunction` (wooo!)
Test illustrating weakness in the AsyncChain interface design.
remove comment. getThreadpool() will be necessary.  BatchWriter is a good example of why.  That code could never be encapsulated in a method that returns a single Callable (since it sends multiple Callables into the threadpool).
test to verify that the active/inactive semantics on `ShardStateWorker` work as expected.
start/stop for ShardStateServices
Merge pull request #93 from gdusbabek/asyncchain_improvements

AsyncChain improvements
Merge branch 'master' into udp_ingestion
update UDP pom to 1.0.4-SNAPSHOT.
A more predictable shardStateWorker test.
Merge pull request #86 from gdusbabek/udp_ingestion

UDP Ingestion