[BZ 1110462] do not compute aggregate metrics when there is no data

[BZ 1110462] Initial commit for InvalidMetricsManager

[BZ 1110462] Refactoring to fix invalid metrics queue

DelayQueue cannot be used with ThreadPoolExecutor. I learned that
ScheduleThreadPoolExecutor basically uses a delay queue, but it stores
RunnableScheduledFuture objects whereas I want to store InvalidMetric objects
in order to use its definition of equals() and hashCode(). I considered
extending ScheduledThreadPoolExecutor and using the hooks it provides to
decorate the tasks added to the queue. It was going to involve too much time,
effort, and testing; so, I instead decided to use a DelayQeueue independent of
the Executor's queue.

[BZ 1110462] add logging

 [BZ 1110462] adding, updating unit tests

[BZ 1110462] update MetricsServer to submit invalid metrics to InvalidMetricsManager

i[BZ 1110462] adding javadoc and fixing call to DateTime ctor