Use type safe ActorPath instead of String.

ActorPath provides convenient methods such as / to construct a child path.
Don't hardcode the name of BeyondSupervisor.

Add BeyondSupervisor.Name field to be consistent with other actors.
Remove unused import.
Add GameEvent trait.

GameEvent simply logs all GameEvents for now. For analysis, this behavior
must be changed to write to HDFS.
Emit "User Login" and "User Logout" events.

Include "username" field when emitting these events.
Move SystemMetrics actors to beyond.metrics package.
Add trackUser method to GameTrait.

trackUser automatically adds username field from implicit request parameter.
Add a method to get the current classpath.

Play framework uses a custom class loader for auto-reloading in development
mode. So in development mode, we must join the class loader with the parent
class loader to get the complete classpath.
Add a method to get the current java binary path.
Add a method get the path for writing PID from configuration.
Move getProcessID method to BeyondRuntime as processID.
Make ZooKeeperLauncher fork ZooKeeperServer.

Currently, the lifecycle of ZooKeeper server is exactly the same to that of
Beyond instance. So whenever Beyond restarts, the ZooKeeper server also
restarts.

Unfortunately, this dependency causes unnecessary delay in Beyond shutdown.
When shutting down Beyond, the ZooKeeper server can be stopped before Apache
Curator connection to the ZooKeeper server is closed. In this case, Curator
tries to reconnect to the server for each pending operation, which causes
significant delay in shutdown.

This patch is the first step to separate the lifecycle of ZooKeeper server from
that of Beyond instance. ZooKeeperServerMainWithPIDFile is the main class to
execute ZooKeeper Server. It writes PID to the configured path and executes
ZooKeeper server. The next patch will make ZooKeeperLauncher kill the process
if it is not responding.