The `As a` type is `Equality' a a` and easily constrains polymorphism.

Original idea due to @shachaf.
Merge pull request #332 from tel/dev-as

The `As a` type is `Equality' a a` and is convenient for constraining polymorphism.