Added a multitude of new features and fixes

* Added a feature called event hooks; event hooks allow you to bind callbacks to a canvas when an event fires for any layer on that canvas. See the docs for details.
* Added new `dx` and `dy` event properties for draggable layers, which can be used to detect the change in position when dragging.
* Added the following events: `add`, `remove`, `change`, `move`, `animatestart`, `animate`, `animateend`, `stop`, and `delay`. See the docs for details.
* The `load` callback for images is now an official jCanvas event and therefore can be used with event hooks.
* Added a new `type` property for the plugin API to indicate the type of drawing being drawn.
* Added a new drawing type `circle` which is simply an alias to the type `arc`.
* Added a new function, `setGlobalProps()`, to the plugin API
* Removed the `fireDragGroupEvents` property; events no longer fire for layers that are dragged indirectly.
* Fixed a bug affecting layers with `disableEvents` set to `true`.
* Fixed a bug affecting the `step` callback for the `animateLayer()` method.
* Fixed a bug in which `mouseout` and `mouseover` events would repeatedly (and unintentionally) fire when dragging a layer.
* The `dragstart`, `drag`, and `dragstop` now fire before other mouse events (if their respective callbacks are defined, of course).