Simplify ClosableLazy

* Fix the type annotation so that null is a subtype of T
* Use a closure to handle closing rather than a special member type
Prevent ClosableLazy deadlock when get is called during close

Fixes #2986.
fix deprecation warnings in build files
Merge branch 'fix-warning-build-file' of github.com:xuwei-k/Play20
Merge pull request #2993 from richdougherty/closable-lazy-deadlock

Simplify ClosableLazy and prevent deadlock
avoid constructing unnecessary objects
Fix statement preparation in batch (No longer use SqlQuery at batch creation)
Merge pull request #3016 from cchantep/fix-3016

Anorm BatchSql throws an error when executed since Play 2.3
Merge pull request #3018 from yanns/ws-mini-fixes

avoid constructing unnecessary objects
Switched to using play-enhancer
Removed duplicate example

Removed duplicate code sample from the "Auto Plugins and plugin settings" section. This fixes issue #2996
Add migration notes about Pk deprecation (update related code samples)
Refactor SqlQuery case class as trait with companion object, so that it will be possible better check its creation. Update BatchSql, which was directly using SqlQuery at creation, replacing it by raw (string) statement, with SqlQuery created internally with checks.

```scala
import anorm.BatchSql

// Before
BatchSql(SqlQuery("SQL")) // No longer accepted (won't compile)

// Now
BatchSql("SQL")
// Simpler and safer, as SqlQuery is created&validated internally
```
Stop ClosableLazy throwing NPE when close called before get

Fixes #3024.
Merge pull request #3029 from cchantep/anorm-pkbk

Anorm Pk deprecation
Merge pull request #3030 from richdougherty/lazy-closable-npe

Stop ClosableLazy throwing NPE when close called before get
Typo: Unforseen -> Unforeseen
WsSSL exists in docs twice

Doesn't need to be in there the second time.
Add Play Asset JavaScript litteral binder
Fix typo (litteral => literal)