fix #23, refactor and improve Greenhorn class
fix #23, refactor and improve Greenhorn class

* when the document's readyState reaches interactive the `Greenhorn` object will emit a `ready` event
* the `Greenhorn` object will emit an `update` event once every cycle
* `Greenhorn.isDown` has been changed from an array to a read-only function
* `Greenhorn.currentState` has been changed from a string to a read-only function
* added `SHIFT`, `CTRL`, and `ALT` to the `KEYS` object
* the canvas element is now directly accessible as `Greenhorn.canvas`
* relevant values from the `env` object have been moved to `Greenhorn.config` and `Greenhorn.buttonDefaults`
* general cleanup and refactoring in the interest of maintainability
sedabull/Greenhorn,sedabull/Greenhorn