HNil.length / Sized.toHList / HList.toSized[M]

Just the first four commits (out of 5) of https://github.com/milessabin/shapeless/pull/105, with some enhancements in the last one (HList.toSized[M]) - namely, one can now just write:

val hl = a :: b :: c :: ... :: HNil
val sl = hl.toSized[List]
val sa = hl.toSized[Array]

I also added the corresponding methods for tuples (and added some tests).