Added HList.collect(Poly) & Tuple.collect(Poly) (#130)

The current convention is would be for the signature to be of the form,

    def collect(p: Poly)(implicit collect: Collect[L, p.type]): collect.Out

It's a little bit terser, without being less informative, and it also makes inference smoother for arguments which are convertible to but not actually `Polys`.