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
The `tasks` object is now passed around and manipulated by reference instead of being accessed globally by the helper functions. Might consider passing and returning by value.