Use an inline cache when accessing Application.injector

Improves application performance by about 3–5% in some benchmarks by eliminating calls to Guice when making requests.

@jroper, you might be interested in this one.
Anyway, I think this API should not be called anymore now that we have DI?

I mean, instead of writing the following:

```scala
object Application extends Controller {
  val index = Action {
    val html = Cache.getOrElse("index.html")(views.html.index())
    Ok(html)
  }
}
```

You should now write:

```scala
class Application(Cache: CacheApi) extends Controller {
  val index = Action {
    val html = Cache.getOrElse("index.html")(views.html.index())
    Ok(html)
  }
}
```

And with this second version there should be only one lookup to Guice, initially, when the application is loaded. Am I right?

Maybe instead of adding this caching mechanism to this class (that also adds complexity) we should simply deprecate it? I admit that such a choice is hard to do because it makes it more painful for users to migrate to 2.4.0 if we deprecate a lot of things.