unleashed ultimate hax

- enabled ability to create a macro from a macro so you can macro while you macro.  this involved two things:
  - loop over `taskMap` in a different manner (had to move some functions out of the loop b/c of jshint)
  - pass the entire `data` object into the `define()` callback itself, so you can do all sorts of wacky stuff.
- added tests