Refactor Gruntfile to dev vs. dist builds

This sets the stage for better automated testing and consistency across
browser vs. CLI tests. I'm opening this PR now but I'm still planning on pushing more changes to it. Presently I'm setting up Browserify to run tests in the browser; following that we'll be able to get the tests running in different browsers. I'm hoping we can use SauceLabs or something similar that provides free testing for open source projects.

For the changes thus far, we can build just like before with a new command: `grunt build:dist`, but I've also provided a dev build that builds to `tmp` so we can develop without putting the changes in dist.

### Work Remaining

- [x] Setup modules to make importing easier
- [x] Update examples to include dist version of library rather than npm version
- [x] Get tests running again
- [x] Use Karma or Testem via grunt for automating browser tests

What do you think of this plan? I'm open to a simpler path if you have any other ideas.