Improve build and dependency version handling

- grunt configuration written in CoffeeScript to be more concise with other sources
- use [npm-shrinkwrap](https://npmjs.org/doc/shrinkwrap.html) to lock down dependency versions (especially transitive)
- define strict dependency versions in package.json for concise development experience
- clean dist directory before build, naturally to fight accidental odd things

Nothing fancy, just basic things to build upon. Hope u liek.