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
Update scripted launch options to set project version
Ignore jnotify errors on removing watch
Merge pull request #3150 from pvlugter/assets-reload-2.3.x

Implemented non-blocking run mode (2.3.x backport)