Removed the contention caused by requesting a logger

Formatting.
Removed lazy declarations and re-arranged JavaAction in order to minimise initialisation logic, thus reducing the amount of introspection occurring. In addition handlers are now cached by the router in order to avoid instantiation costs.
Removed unnecessary locks which were also causing contention.

Formatting

invocation needed to remain a def as its evaluation was being done just once.
Wound back caching handlers other than those belonging to Java. Java handlers are expensive given their introspection
Factored out the concerns within an action that are expensive given reflection: annotations. The router is now caching the JavaActionAnnotations data only.

Didn't need to be a case class.
Protected access to the internal Play logger as we don't want other code utilising it accidentally.