STUPIDROBOT: Add logging of player events for analysis
This commit introduces basic event-logging to allow developers to analyze
gameplay and make changes accordingly. Currently, it is only active for
StupidRobot, where it records keystrokes within the textbox and clicks on
functional buttons. When the player leaves the page, the log is stored as a
JSON text file on the server.
STUPIDROBOT - Add logging for non-player events, other minor changes
This commit refines the event-logging introduced previously. Primarily, it adds
logging for non-player events in StupidRobot, including the image displayed and
the game's reactions to tag submissions. It also makes some other minor
changes:
 - add browser details to event log
 - add actor to event (either player or game)
 - change details of keypress from key code to character
    - add helper function to determine character using KeyboardEvent
 - move logEvent and sendLog functions out of StupidRobot to Game API
    - This will allow the functions to be used by other games in the future

Notes about getPrintableKey helper function: the W3C specifications for the
KeyboardEvent event include a "key" property that contains the key value.
However, as this is not actually supported by many popular browsers, the helper
function uses the keyCode and shiftKey properties to determine the key value.
STUPIDROBOT: Store session logs in individual files on the server
The session logs were previously appended to a single text file. With this
commit, they will be stored in individual files, within the analytics folder.
Merge remote-tracking branch 'upstream/development' into development
Add separate controller action for saving event logs
Previously, logs were saved by sending a POST request to the existing play
action of the GamesController, which rerouted them to the proper function. This
commit adds a separate saveLog action to the GamesController, and sends the
POST requests to that action instead.

Note: actions are functions registered with a controller, which can be accessed
via a URL. For more info, look at the Yii documentation.

Other changes:
 - Store logs in game-specific folders within the analytics folder
   - e.g: StupidRobot logs will be stored in a separate folder than ZenTag logs
   - Note that only StupidRobot has event-logging currently
Move analytics directory inside protected directory
Minor commit to protect the analytics data on the server. Previously, because
it was outside the protected/ directory, it was publicly accessible.
StupidRobot: Change analytics log filenames to be timestamps
The filenames for the analytics logs have been changed to timestamps, in the
following format: YYYY-MM-DD.hhmmss.uid.json, where uid is a three-digit number
used to distinguish multiple logs created at the same time.
Example of a filename: 2014-07-14.185919.001.json

Other changes:
 - Remove runtime directory creation
 - Commit analytics/StupidRobot directory (with .gitignore)
Merge branch 'gsolbeck-development' into development