Unit tests

Adds unit tests. Fixes issue #1.

Notes: 

- Modularized and documented helper functions
- Global `tasks` variable still maintains tasks registry, and is passed as a parameter and manipulated by reference by modules as necessary
- Three test specs in `test/load-subfile-spec.js` are left unimplemented due to implementation complexity
- Added [lodash](http://lodash.com/docs) as a runtime dependency to standardize type validation
- Hand-verified that `examples/gulpfile.js` produces the same output as master
If you're OK with lodash as a runtime dependency, it'd be good to change all of these type validations to the [`_.is*`](http://lodash.com/docs) functions for consistency, and for offloading correctness.