gulpfile cleanup / improvment and initial test framework and just beginn...

The beginning of my work for #436...

A few things:
- We don't need to merge this into master immediately (although you could nothing is broken) and if you create a "tests" branch then I could merge into that instead. (or just add me as a contributor and I'll work off that directly).
- The gulpfile needed some improvements but the API has not changed one bit. The only difference now is that `gulp test` now actually runs the tests.
- I have not really added any significant tests yet beyond same basic sanity checks and a helper method. I expect to make more progress on that this weekend.
- We should discuss the behavior of some of those helper methods (just looking around I can see areas for improvement)
- Once I've finished with these unit tests (and setting up coverage, CI etc...) we can talk about how to test the chart rendering in more detail. I have some ideas.
- `gulp build` now writes the output to the `dist/` directory so as to keep the build files out of source control. They will still get published to NPM of course because when I add the automation for publishing and releasing it will ensure those files are present in `dist/` which is not ignored by NPM. `dist/custom` contains any custom builds and `gulp build` still accepts `--types` and is now case insensitive.

Sorry this took a bit longer than anticipated, will be trying to keep the pace though.