Better unify implementation (deals better with higher kinded types)

- New definition and implicits of HList's Unifier
- Same thing for tuples' Unifier (does not rely on HLists' Unifier any more)
- Adapted tests to the new definitions
- Added tests that now pass thanks to these changes