Add plugin system

This adds an extensible and powerful plugin system to leapjs.  Plugins can be defined with `Leap.Controller.plugin`, and then used on a controller with `controller.use`.  They can add data to a frame or objects on the frame, add methods to the frame or objects on the frame, and emit events off of the controller.

Please have a look!