Added onError to PlayRunHook, which is called whenever play run has an exception.

It’s useful to let PlayRunHooks be notified when there was an exception during Play’s life cycle. For example, if we had resources open or were a running process (like a Grunt watch task) in a `PlayRunHook`, it needs to be cleaned up.

`PlayRun` now calls the hook’s `onError` on any failure between the calling of `beforeStarted` to the end of the run task. I would actually prefer one step further: moving `server.stop()` and related to this `catch` block as well, so that we un-bind the port and properly close resources on failure. As-is, during development, when Play does hard crash, the port is left bound. Thoughts?

Additionally, previously, Play swallowed all but the last exception when calling `run`. Now, when multiple exceptions are thrown, they’re combined into a `RunHookCompositeThrowable` (modeled directly after `scala.collection.parallel.CompositeThrowable`), which will make the logs more clear.

There is also now some test coverage to `run`’s functionality. The TypeSafe CLA should be signed.