Typeable cleanup

* Don't materialize unverifiable Typeable instances. Fixes #69.
* Added support for casts to polymorphic case classes.
* Casts from null used to always succeed (what was I thinking?). Now
  they always fail.
* Casts to intersection types now verify all members of the
  intersection.
* Better handling of casts to existentially quantified polymorphic
  types.
Added rotateLeft, rotateRight, length & append to Coproduct
Merge pull request #158 from stacycurl/rotate-coproduct

Added rotateLeft, rotateRight, length & append to Coproduct
Added rotateLeft & rotateRight to Poly