Restructured to add Grunt support

grunt default task will lint, test, concat and minify files to create a
dist directory containing the concatenated and minified files.

grunt test will only lint and test.