Created an Engine class which starts / stops the game loop (and will handle input).
Renamed "private" method underscores from StateManager and replace with hidden functions.
Created a "main" function to kick-off execution.
Added an animation frame shim (this wasn't developed by me).
Partially updated to use RequireJS.
Updated Engine to use RequireJS.
Updated logger to use RequireJS.
Updated main module to use RequireJS.
Updated StateFactory to use RequireJS.
Updated StateManager to use RequireJS and added a tick method to update active states.
Updated states (Game / Menu) to use RequireJS.
Remove old code from index.html.
Game engine now calculates delta.
Created a canvas object (and abstraction of HTML5 canvas).
Now passing a config object into the state factory and states.
Moved state modality into a module.
Convert canvas object literal into a (prototypal) class (Canvas).
Create an input module that listens to canvas clicks.
Add a generic on / off event handler to input.
Add onInput method to the state manager.
Replace underscore with own simple functional library.
Remove unnecessary vars.
Should bind onInput callback to state manager (this).
Fix the logger.
Added a button class.
Refactor to use prototypical inheritance instead of 'new' - not too pleased with the 'ref' prefix for what were classes.
Add Object.create shim (probably a bit mickey mouse - doesn't take second param yet).
Fixed dodgy implementation of reveal in pop.
Update states to new method of object creation (prototypal inheritance).
Simplified event consumption.
Added a prototypal view object (base class for UI elements).
States to consume events.
Button now uses view base class.
Tweaked spacing.
Add width and height properties to the canvas.
Added a panel to the menu state.
Simplified naming in the view prototype object.
Cleaned up some spacing.
Minor spacing tweaks.