Cleaning and small fix in ToList implicits

This PR consists primarily in applying  the boy scout rule :) (http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule) after my previous PR (https://github.com/milessabin/shapeless/pull/97).

The first commit removes the now unused type variance annotation on ToList and one of the implicits which was not used any more too. (All the tests still pass.)

The second commit makes HNil.toList compile (and adds it to the tests).

The third commit merges two of the ToList implicits into a more concise one, at the expense of adding a variance annotation on ToList.

I split this PR into 3 commits for the sake of the explanation, I can squash them back if you wish.