Added headTail & initLast to HList & Coproduct

+ Aliases: HList.{headTailP, initLastP}, Coproduct.{headTailC, initLastC}
+ Added ProductDepFn1 & CoproductDepFn1 for dependant functions that return products / coproducts.
+ Replaced HList.{Init, Last} type classes with InitLast