Getting closer to a working pmap

This implementation still doesn't pass any tests.  It is cleaner and
more declarative and should be able to run in multiple directions (with
slight massaging).