Add configuration hooks into NettyServer createSSLEngine

Right now, Play cannot enable client authentication, because SSLEngine.setNeedClientAuth needs to be called, and the SSLContextProvider returns the SSLContext, not the SSLEngine.

So, added SSLEngineProvider with a default, following the SSLContextProvider model.  This provides the normal behavior, but implementers can now do:

```scala
class NeedsClientAuthSSLEngineProvider extends SSLEngineProvider {
  override def createSSLEngine(appProvider: ApplicationProvider, sslContext: SSLContext): SSLEngine = {
    val engine = sslContext.createSSLEngine()
    engine.setNeedClientAuth(true)
    engine
  }
}
```

You'd think that sslContext.getDefaultParameters().setNeedClientAuth(true) would do this, but apparently not.  There's also the option of calling sslEngine.setDefaultParameters(sslContext.getDefaultParameters()), which might be a cleaner fix.

Reference: 
https://stackoverflow.com/questions/9573894/set-up-netty-with-2-way-ssl-handsake-client-and-server-certificate
https://github.com/mashupbots/socko/blob/master/socko-webserver/src/main/scala/org/mashupbots/socko/webserver/SslManager.scala#L77