WebSockets refactoring

There are two main new features here, one is, in built support for
handling WebSockets using actors (this code came from reactive maps and
has been thoroughly reviewed by the Akka team).  The other is the
ability to reject a WebSocket by sending a Result.

In addition to this, since when working with actors, it might make sense
to use higher level message types (when using iteratees/enumerators you
can easily use enumeratees to address this), and the type of the
messages coming in might be different to the type of the messages going
out, this makes it possible to use different message types of incoming
messages and outgoing messages.

This however is not implemented on the Java side, since the Java side
does not provide any existing mechanism to format incoming messages, you
can only handle them as strings, bytes or JSON.  Adding this to the Java
API would be a considerably large amount of work that I didn't want to
take on just yet.

Of course, I also added tests, and this meant writing a WebSocket client
(uses Netty).

In the process of writing tests, I found and fixed several bugs in
Play's WebSocket support, including 2 race conditions and 2 spec non
conformance bugs.  In the process of fixing these I did some substantial
refactorings to the WebSockets implementation in general.

I've added fairly comprehensive docs of the new features, and also
extracted code samples that weren't previously extracted in the Scala
WebSockets docs.

Summary of changes:

* WebSockets can now have both an input and output frame formatter (just
  scala)
* WebSocket actor support (java and scala)
* WebSocket handlers can reject a WebSocket with a Result (java and
  scala)
* Fixed race condition in Netty WebSocketHandler code that could cause
  incoming messages to be missed when the WebSocket is first created
* Fixed race condition in JavaWebSocket code that could cause incoming
  messages to be missed when the WebSocket is first created
* Fixed bug where close frame was not being sent when the consuming
  iteratee was done.
* Fixed bug where close frame was not being sent when the EOF was sent
  from the enumerator.
* Renamed NettyPromise to NettyFuture and made it an implicit conversion
  that provides a toScala method that converts ChannelFuture to
  scala.concurrent.Future[Channel]
* Added fairly comprehensive tests for WebSockets, handled with
  iteratees/actors/java actions
* Added documentation for all new functionality
* Extracted Scala code snippets
Allow evolutions to be run in a single transaction

* Set evolutions.autocommit=false to turn autocommit off
Documentation for evolutions.autocommit
Collect parser
Fix: typo in JavaGuide (todo list)
Merge pull request #2573 from jroper/websockets

WebSockets refactoring
Merge pull request #2608 from DanieleSalatti/master

Fix: typo in JavaGuide (todo list)
Added activator template test/publish
Merge pull request #2606 from cchantep/anorm-collect

Collect parser
fix tree layout of subproject example
Merge pull request #2483 from mkurz/evolution_autocommit

Allow evolutions to be applied in one single transaction
Merge pull request #2601 from jroper/activator-templates

Added activator template test/publish
Incorporated sbt-web concerns into Play in order to reduce the repetition for sbt-web plugin configuration. Test coverage has been increased around the scripted tests for dist. The tests now also include testing that asset generation for less files happens correctly.

The documentation has been updated to reflect sbt-web usage. In addition some references to the now, defunct Play command have also been removed.

Finally the play start command has been changed so that it is now a convenience function for invoking stage and its associated binary. This was done because the sbt-web asset pipeline must run. However I think that start is now more reliable as a consequence.
Revert this commit once Trireme 0.7.3 is released and there is an updated js-engine with that dependency. We are using our own publishing of Trireme as we need the patch at https://github.com/apigee/trireme/pull/51 quickly.