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.

Review by @jroper or @huntc