Lift functional 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.

per issue #27