Allow user code supplied to iteratees and enumerators to run in an ExecutionContext (#807 part 2)

This is the second part of #807. The first part was in PR #996.

- Coverage of *all* iteratee/enumeratee/enumerator methods that accept user functions. (The previous PR didn't get everything.)
- All EC arguments are now implicit. I've removed explicit EC params from the sample apps, but I still need to go through Play to remove any unneeded explicit passing of ECs.
- ECs are prepared before use. This allows ECs to capture any important thread local information so that the information can be available when the user function is executed.
- More scaladoc.
- Lots of tests.
- Deprecated `mapDone` since it is the same as `map`.

Next steps:

- Go through Play and audit the EC usage there. Add EC args to the Play API where necessary.
- Remove any explicit EC usage that can now be determined implicitly.
- Think more about the default iteratee EC: make it configurable, tie in to other ECs in Play. I will raise a ticket for this.
- Tidying up deprecated methods - https://github.com/playframework/Play20/issues/1077