Add spray-client to SBT library dependencies.

spray 1.2.1 is chosen because it is built against Scala 2.10.3 and Akka 2.2.4.
See http://spray.io/project-info/current-versions/#current-versions for further
information.

Also explicitly add Akka 2.2.4 to build.sbt because the Akka version used by
Play framework is 2.2.1. This evicts the older version.
Add GameClientConsole.

GameClientConsole is a command line tool to test Beyond actions. After entering
username and password, we can request actions with action URL and parameters.

GameClientConsole internally uses sprary-client to asynchronously send HTTP
requests. Currently, the base URL is hardcoded to http://localhost:9000, but
this will be changed to a command line argument in the follow-up patch.
Turn off RegexChecker.

RegexChecker prohibits the use of "println" everywhere. So we can't use
Console.println too. Turn this check off to allow Console.println.
Add native library directory before server starts.

Currently, only development mode(play run) runs well with sigar, because
sbt extracts native library files into `target/native_libraries/*bits',
and only development mode has this path set in java.library.path.

This patch adds the native library directory into java.library.path
before server starts. But I'm not sure this is a proper way to use JNI in
Play Framework. There is no documentation about it.
Extract TimeoutFilter to a seperate file.
Add NumberOfRequestsPerSecond.

NumberOfRequestsPerSecond provides a counter which represents the number of
requests per second.

Internally, it has two counters for efficiency: front count and back count.
getNumberOfRequestsPerSecond method returns only the front count.
increase method does not increase the front count directly. Instead, it
increases the back count. Every second, the front count is updated with the
value of the back count and the back count is initialized back to 0.
Register MBeans on server start.

Currently, a sigar mbean is registered when SystemMetricsMonitor starts.
Registering mbean each time an actor restarts seems to be not a good idea,
because mbean server has the same life cycle with JVM. This patch makes
Beyond server register sigar mbean on start.

This patch also makes server register NumberOfRequestsPerSecondMBean.
Extract JMXConnector creation as JMXConnectorMixin trait.

Currently, SystemMetricsMonitor creates a JMXConnector on preStart. This patch
extracts JMXConnector creation as JMXConnectorMixin. After this patch, a class
which wants to use JMXConnector can use the member variable named jmxConnector
with JMXConnectorMixin.
Add RequestCounter.

RequestCounter is an actor which has a MBean proxy of
NumberOfRequestsPerSecond. When this actor receives an Increment message, it
calls increment method of the proxy.
Add RequestsCountFilter.

RequestsCountFilter is a global filter. It must be the first in WithFilters to
count all requests because later filters might not be applied.
Refactoring SystemMetricsMonitor.

Currently, MBeans are initialized on preStart and create Receive with the
MBeans. But there is no need to do it. MBeans can be initialized in the
constructor. This makes receiver simpler because receiver can use MBeans as
a member variable.
Make SystemMetricsSupervisor monitor the number of reqests.

Currently, SystemMetricsSupervisor monitors system loads and memory usages, and
writes them to database every 10 seconds. This patch makes
SystemMetricsSupervisor also monitor the number of requests per second.
Fix a typo: ObjectName -> objectName.
Shutdown Beyond when handler function is not found.

Escalate if the root cause of ActorInitializationException is
NoHandlerFunctionFoundException.

ThrowableOps is introduced to add getRootCause method to Throwable.
Change RuntimeException to Exception.

There is no need to use RuntimeException because Scala exceptions are unchecked
anyway.
Add jline2 to SBT library dependencies.

JLine is a Java library for handling console input. It is similar in
functionality to BSD editline and GNU readline:
https://github.com/jline/jline2
Don't show password in plain text.

Use jline's ConsoleReader.readLine(Character) which reads the next line with
the specified character mask.
Add tab completion of action names to GameClientConsole.

Use jline's Completer to support tab completion of action names.
Make GameClientConsole take the base URL as an argument.

If no base URL is given, http://localhost:9000 is used by default.
Get the list of action names by parsing routes file.

Don't hardcode action names in GameClientConsole. Instead, parse routes file
and get the list of action names for auto completion.