Merge pull request #1 from ImAlsoGreg/master

A few tests
Generalize and remove use of error
Get test suite building
Add props and test cases using mapK and mapV

May have found a mapK bug, it seems that:

runMapSyntax M.lookup M.insert $ do { foo ; mapK (++"a") bar}
==
runMapSyntax M.lookup M.insert $ do { mapK (++"a" bar) }

(looking into that now)