ignore .swp files
formatting
boomerang holds a reference to its own URL
add form_submit event so we can track if a user left a page by submitting a form (needed for iOS)
pass event to onload handlers
do not hash short query strings since the hash is longer
move logger settings into logger closure
encapsulate boomr transfer loop into its own function
restrict max length of boomerang cookies to 500 characters instead of 4000 to prevent overflow
mention what is too long
set cookie expiry to 1 day in the past to remove it
do not hash hash part if strip hash was false
add a few more checks for cookie parsing
whitespace
update license date
Do not let done() fire twice

If init() gets called twice, it's possible for done() to be called
twice, which will call sendBeacon() twice, resulting in a duplicate
beacon.

Since complete is set to true once sendBeacon is fired, we can avoid the
duplicate beacon by exiting silently if done is called after complete
has been set (ie, done has been called more than once).
Rename setCookie to updateCookie
Update updateCookie method to remove cookie elements as well
add getBoomerangTimings method
Make sure params is an object before iterating

If params is not an object, we might end up iterating through the
characters of a string or elements of an array.  This is not what
we want, so make sure that params is an object before we do anything.
document.referrer holds the old referrer if you click the back button.
to get around this, we look at the click URL before looking at the
referrer.

Still won't work if you went to a new URL by typing it in, but those
cases are rare.