Allow user code supplied to iteratees and enumerators to run in its own ExecutionContext. Second part of #807

Also:
- ExecutionContext arguments are now implict rather than explicit
- Default iteratee ExecutionContexts are public rather than private
- ExecutionContexts are prepared before use