Protocol events

This adds two new controller events, `beforeFrameCreated` and `afterFrameCreated`, which give access to the early stages of websocket communication.  This is included to provide better support for libraries which do frame communication and storage, such as [leapjs-network](https://github.com/leapmotion/leapjs-network) and [leapjs-playback](https://github.com/leapmotion/leapjs-playback).

@jo3w4rd @raimo