Add an onBeacon event

The onBeacon event fires concurrently with the beacon being sent
(though practically, since JavaScript in browsers is single-threaded),
it is sent as soon as control returns from the sendBeacon() method.
Event names are case-insensitive

Convert event name to lower case before subscribing.  Event
names should be case insensitive, and doing this ensures that
we match without considering case.

We don't use toLocaleLowerCase because all our event names are
ASCII safe.
Comments and jslinting
Add custom events for browsers that support it

On browsers that support CustomEvents (with a shim for IE9 & 10),
we will now fire a custom event for the following situations:

- onBoomerangLoaded: fired when boomerang has loaded.
  event.detail contains a reference to the BOOMR object under the "BOOMR" key

- onBeforeBoomerangBeacon: fired before boomerang beacons, you can use this event
  to manipulate what gets sent on the beacon by using BOOMR.addVar or BOOMR.removeVar
  event.detail contains an object map of all the variables that will go onto the beacon

- onBoomerangBeacon: fired concurrently with boomerang sending off the beacon.
  event.detail contains an object map of all the variables that went onto the beacon
  You can use this event to clear the beacon of any variables that should not be
  persisted across multiple beacons on a page
Add custom event to README