1. Service shutdown behavior improved. It now honors the timeout, attempts an orderly shutdown, and forces a shutdown after the timeout

2. CompletionService AbstractCompletionTask: Exceptions thrown from a task are no longer swallowed but are instead made part of the results array passed to `process()`. CompletionTasks implementing `process()` should be aware of whether a result is exceptional