Cross-browser; pre-commit

* Add a cross-browser helper function to grab the audio context.
* Throw Error objects instead of strings (more robust cross-browser).
* pre-commit hook (and documentation in README).