Coercion

Handles basic coercion (Fix for #84)
See `tests/pos/Coercion.hs` for an auto-generated coercion.

* by ANF transformation code (e (Coercion c)) should be transformed to (let x = Coercion c in e x)
  but this creates a type error by CoreLint type checker because x is not a real runtime argument.
  These kind of type errors are ignored.

* In types (Cast e c) and (Coercion c) get trued types and when (Cast e c) is typed against a type t, 
  t is constrained to true