imap: Add some combinators, fix up some docs, add docs, fix up unit tests.