Performance optimisations in iteratees and request processing

* Run internal, non-blocking code on the same thread, where possible,
  rather than using a ForkJoinPool. Introduced a trampoline that can
  be used to execute code on the same thread. This is now used instead
  of a fork-join pool for iteratee internal code and when processing
  requests. User code still runs in a separate ExecutionContext.
  For a simple request, calls to the FJP ExecutionContext are reduced
  from about 50 calls down to 2 calls.
* Change some blocking iteratee methods to run in a user-supplied
  ExecutionContext: Enumerator.fromStream, Enumerator.fromFile.
* Optimized several hot iteratee functions: fold, unfold, flatMap,
  Done.mapM, Enumerate.apply.
* Bug fix: removed several accidental uses of Scala's global
  ExecutionContext from iteratees methods.