Implement a basic mapper

This should now be ready to merge. For details, see inline docs and the brief integration test at: https://github.com/dpla/KriKri/pull/23/files#diff-c139162c30d9695d1f73d5b6881e4348R4 

I'll compile a longer commit message on squash.
Can you explain why the second truth check is `block.arity < 1`? (Can arity be negative?)