Map reduce hacks

These hacks adds the following changes
  * Support for specifying `num-mappers` and `num-reducers` in map-reduce config...
  * Introduce `map_finished(context)` invoked after all `map` calls, enabling `map` to cache values and flush when done... Essentially giving us linear scan like performance :)
  * Support for `myjob.zip` files containing a `myjob.py` file...
`myjob.py` will be able to load other resources from the zip file using `__loader__` which will give the instance of `zipimporter` the module was loaded from.

I think I'll get around to documenting map/reduce jobs tomorrow...