Implemented non-blocking run mode

* Used this to implement a dev-mode scripted test.
* Reproduced #2905, assertions commented out to prevent failing.
Only reload on non assets changes

Fixes #2905

This is a major refactoring of PlayReloader.

* Pulled out all logic to do with watching, jnotify etc into a
  PlayWatchService
* Rewrote change detection/reload logic
* Added some more scripted tests to test things like reload failures
Don't overwrite explicit Content-Type in FakeRequest
Make body type argument of WrappedRequest covariant to match Request
Test for HTTP calls
Use maybeApplication in CSRF and Crypto
Update acolyte dependency
Fix duplicate Content-Type request header in WS
Rename JavaJsonRequests documentation to JavaJsonActions. The current name is quite confusing because it also deals heavily with json responses
Merge pull request #3145 from benmccann/json-docs-rename

Rename JavaJsonRequests documentation to JavaJsonActions
Merge pull request #3140 from cchantep/acolyte-dep

Update acolyte dependency
When adding activator to PATH variable use an absolute rather than relative path
Merge pull request #3149 from benmccann/activator-install-docs

When adding activator to PATH variable use an absolute rather than relative path
Merge pull request #3116 from cchantep/router-call-tests

Test for HTTP calls
Merge pull request #3108 from jroper/assets-reload

Implemented non-blocking run mode
Merge pull request #3141 from buster84/patch-2

Fix duplicate Content-Type request header in WS
Merge pull request #3132 from gmethvin/maybe_application

Use maybeApplication in CSRF and Crypto
Refactor server start code in preparation for akka-http backend

Moved the server intialisation code out of NettyServer and into a new
class called ServerStart. Refactored the existing server start logic
so it is easier to understand. Added tests for server start logic.

Consolidated server configuration into a single class, ServerConfig.
This configuration class will be used by both the Netty and akka-http
server backends.

Created an abstraction for a VM process so that server creation can be
tested properly. This trait, ServerProcess, provides alternative
methods to call instead of calling System.getProperties, System.exit,
etc.

Made it possible to start servers other than NettyServer, by providing
a system property called "server.provider" that locates a...
ServerProvider. The ServerProvider class creates the actual server.
This feaure is only exercised in unit tests for now.

Also split out some of the smaller classes that were previously in
NettyServer.scala into other files.
Add parentheses to stop compiler warnings
Ignore jnotify errors on removing watch