chore(build): automate release process

Read the development section of README for an overview.

- Adds a commit message validator to conform to [these conventions](https://github.com/ajoslin/conventional-changelog/blob/master/CONVENTIONS.md), so changelog generation can be added in the future.
- Adds release scripts
- Makes karma test on source files
- Leaves room for many more improvements

A big addition is that Karma now is a grunt task (uses Angular's custom grunt karma task, for command line options), and Karma now runs tests on source files (much easier debugging).

To add in the near short-term:

- Tweak sauce labs test settings so saucelabs is more reliable (doesn't hang up), and enable it on Travis.
- Push out latest build to CDN using travis on every push to master
- Add more code-checking 'safety nets' on Travis CI (grunt-ddescribe-iit, grunt-merge-conflict, etc) incase we commit something stupid!