do not block unload beacon if page has not finished loading
measure navtiming on load or unload, whichever happens first
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.
Merge branch 'master' into gh-pages
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
Merge branch 'master' into gh-pages
Add custom event to README
Merge branch 'master' into gh-pages