HList SuperConstraint

Hi,

let me first say that this only my second pull request so far, so if anything is wrong or should be done in another way pls tell me.

Let me first introduce what I call a SuperConstraint. A HList of type M is a Super HList of type L, if every element type of M is present in type L.

One can argue that such constraint is not needed, because one can get the same behavior with the BasisConstraint. One just has to flip the type arguments.

So to follow the same coding style one needs at least the "Super" type of my commit.

The interesting part of this pull request is the "prove" method. I tried really hard not to need such wrapping method but fail, so if anyone knows a better solution I'm happy to hear it.