Made the use of the ordered execution context in Java optional

* `OrderedExecutionContext` and `HttpExecutionContext` were copied as is from master branch
* `HttpExecution` was copied almost as is, but making `defaultContext` return the `orderedContext` by default, or if `ordered.execution` is false in `application.conf`, it returns a play HTTP execution context.
* `F.Promise` significantly refactored because using execution contexts it can be a lot simpler.