Add tests for Applicative and Monad instances

Unfortunately, these tests are rather slow, so I hid them behind
a SLOW_TESTS macro. I don't know nearly enough about cabal to know
how to arrange for tests to be run conditionally, so hopefully
someone else can set that up properly.
Remove CPP
Merge pull request #102 from treeowl/validation

Add tests for Applicative and Monad instances