Rewrite `Promise::EM` to use a proper `EventMachine::Deferrable`.
`Promise::ChildPromise` is no longer a deferred, but simply wraps a promise.
Deferred creates a linked-list of promises.
Refactor `Promise::Base` to make hooking easier in subclasses.

- Refactor `Promise::EM` to wrap an event machine deferred, which is
  fairly analogous to a promise.
DCI is working properly on thread and EM drivers now.
Make acceptance test more explicit