B.File module with file rules and dependencies
Support polymorphic base monad for IO rules

GHC < 7.7 does not support deriving(Typeable) if a type
parameter has a higher kind (such as (* -> *), e.g. a Monad
instance).  We have to write the Typeable instance ourselves
in that case.

The contravariant package on Hackage (0.4.1) does not
support GHC >= 7.7 at the time of commit.  A preliminary
0.4.2 with GHC >= 7.7 support is thus included as a
submodule.