Basis of module injection
Use application loader to create production applications
Add simple binding dsl
Merge remote-tracking branch 'origin/master' into inject
Made dev mode use GuiceApplicationLoader

Guice is now instantiating DefaultApplication itself.
Scaladocs for binding and module
Added modules loading
Added application lifecycle

This required a little refactoring of Application so it can be
stoppable.

Also found that bindings in Guice can have no target (be bound to
themselves), and there can only be one qualify, so that was changed to
an Option.
Added injector abstraction, and added source reporting in binding errors
Add support injection in FakeApplication
Ported messages plugin to be a module

In addition, filled out the Java API to provide more than just static
methods.
Ported WS plugin to module

Also added Java versions of a number of the interfaces.
Merge remote-tracking branch 'origin/master' into inject
Moved environment methods into environment classes
Documentation

* Got documentation tests running
* Added introduction to modules
* Modified Scala routing and WS docs to use DI
Updated Java documentation
Use collectionAsScalaIterable (for cross compiling)
Fix db.queryExecuteTimeLimit doc
Port DB plugin to inject module
Fix #2336 (restore specs)