reduce util.format calls

grunt's loggers seem to pass their arguments through node's own util.format. this is undocumented though. at the moment, makes for more concise logging calls
grunt.util._ is deprecated. make lodash an explicit dependency
move option acquisition off into its own function, which also verifies
move api url creation into its own function(s)

createRequestId uses all the entropy from Math.random and is now returned as a base-36 string
get params created with node's querystring
mediaOut and mediaCwd effectively default to the current dir.

being explicit about this will make for fewer checks in the rest of the code
move jobs into their own function. this will let us multithread a little easier
oops, no, looks like mediaOut controls whether to take certain actions.

default it to null instead. will need to check elsewhere
remove unnecessary mkdirp while we're at it
requestZip: remove check-and-create race condition, use node's path lib for manipulating filesystem paths
split out zip filename generation, perhaps this could be an option in the future
preprocess path options in getOptions, not saveMedia

TODO: when all path name manips are using the path lib, remove this altogether
getMediaAssets

remove recursion
use path lib
stricter checking of URLs. make sure amazonaws.com really is the suffix of a domain, not just present in a string
move new getMediaAssets supporting functions above it
make client a local var
remove another check-and-create race
place a limit on simultaneous media downloads

expose the number of connections as a configuration option
save plugin-level value for this, as we're calling a bunch of functions now
fix some callbacks
some verbose logging
some more elaborate verbose logging to see exactly what getMediaAssets and saveMedia are doing
verifyDownload: clearer var names