Added headTail & initLast to HList and Coproduct

Aliases: HList.{headTailP, initLastP}, Coproduct.{headTailC, initLastC}
Added InitLast type class, implemented Init & Last in terms of it,
  replaced usage of Init & Last elsewhere with InitLast