Use GHC version for coercion rules

Using the library version didn't make much sense, especially since the
tests-ghc tests had to switch on compiler version anyway, but also
because compiling without cabal would prevent the code from being used.
The conditional fake MIN_VERSION_base definition should probably stay up
top where I moved it, though, in case someone needs to use it to adjust
imports or exports in the future--the top seems an inherently better
place for that.
Merge pull request #75 from treeowl/coerce-version

Use GHC version for coercion rules
Use Data.Functor.Identity

This has just entered base, and includes some optimizations that may or
may not be relevant. For older versions, don't bother making Identity a
Monad instance--it's not exported, and that instance is never used.
Make applicativeTree slightly more readable.