Use fromList2 to implement fromListN in IsList
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
Merge pull request #107 from treeowl/fromListN

Use fromList2 to implement fromListN in IsList
Reimplement <*>

It looks like this works! I have not yet worked out how to take
care of the `|xs| <= 9` case cleanly as yet, so this will still
need some work before it can go in.
Fix warnings
Use coerce for the Functor instance of Elem

Using `fmap = coerce` for `Elem` speeds up `<*>` by somewhere
around 25%.
Simplify <*>

The general case now works for trees size 7 and above, and it's
much less hairy.
Clean up <*> a bit

Move type definitions for `<*>` near where the types are used.

Rename meaningless variables to be a little more meaningful.
Reorder patterns to avoid silly guard.
Add cases to rigidify

It now can handle all trees with at least four elements. We don't
currently use it so flexibly, but leaving those unmatched cases
around seemed sketchy.
Further cleanup, of the apN stuff

Felipe Lessa suggested some minor changes.
Remove unnecessary special cases

I realized that my major rewrite already took care of the cases
from 4 to 6, so we don't need any of those.

Add documentation