ESC to close modals

Replaces #46 

I rebased on top of the dev branch - can someone take one last quick look? Many thanks!

@azirbel @jcollins1991 @charlescharles 

Should the files in ```dist/``` be included here? I noticed that running grunt messes around with all sorts of files and folders that are not in ```.gitignore```.
Some browsers (such as PhantomJS) don't support ```Function.prototype.bind()```. To work around this, you can use the Underscore.js polyfill:
```
_.bind(fn, @)
```