Improve sbt plugin integration

A rebased version of #1439.

Improve the ability for third party plugins/tools to work with play's run task and features.

This adds the following:

* A new PlayRunHook which is used instead of playOnStarted playOnStopped keys. This hook can remember state from start->stop because it is an object.
* A new hook to alter the interaction mode of run (wait for key, vs. wait for GUI event).
* Create hooks so that third party plugins can adapt the classloaders (important if for things like classloader weaving)
* deprecates previous hooks.