2.3.x backport - Broke out PlayWatchService and AssetsClassLoader to be shared

These files can be used in multiple contexts.  In particular, they will
be needed by the forth-coming forked-run support needed by Activator
based on sbt-server.

[Updated] Added play.sbtplugin.run.PlayWatchService back with deprecation warnings

* Also, improved stand-alone sbt scripted test setup

Conflicts:
	framework/project/Build.scala
	framework/project/Dependencies.scala

* Fixed build after cherry-pick
Ensure AddCsrfToken action provides original context

Fixes #3471

Introduced a wrapped context, so calls to mutable objects in the context
such as the session modify the original context, not the new one.
Merge branch '2.3.x' of https://github.com/playframework/Play20 into 2.3.x