Another small fix for error on older iOS versions
Improve performance of Howl::load for long URLs

The previous regexp was highly inefficient. It took 21 SECONDS to sniff
the type from a data-URI consisting of 128K characters.

The culprit is /.+\.([^?]+)(\?|$/.

With this patch, sniffing the type takes less than 1 millisecond for any
string.
Parse data-URIs instead of using XMLHttpRequest

Firefox is the only browser that loads data-URIs through XHR.
data-URIs cannot be loaded in Chrome, Opera, IE and Safari.
one can omit the second parameter in off

In the docs: http://goldfirestudios.com/blog/104/howler.js-Modern-Web-Audio-Javascript-Library
it says:
off: Remove custom events that you've set.
    event: String Name of event.
    function: Function (optional) The listener to remove.
Well, specifying only the event name ['load', 'end' ...] would trigger an error because it tries to fn.toString() anyway.
This commit solves that so you now can do:
sound.on('end', function(){
  alert('sound ended');
});
and later:
sound.off('end');
and it removes ALL handlers you would have for that event.
Code cleanup
Merge branch 'pr/183'
Fire 'end' event on unload when a sound is still playing
Merge branch 'pr/181'
Code cleanup
Merge branch 'pr/182'
v1.1.24