Lifted the interfaces that implement algebraic interfaces

The problem was that sense Hack doesn't have support for higher
kinded types i found a way emulate them with overloading methods
in interfaces.
Merge branch 'master' into lift_functional_interfaces
Merge pull request #31 from traitorous/lift_functional_interfaces

Lift functional interfaces