Renamed Coproduct type class 'RemoveElem' to 'Remove'

+ Change the result of apply to be Either
    (the coproduct result can be obtained by calling Remove.coproduct)
Merge pull request #227 from reactormonk/master

check empty lists for hlist constraints
Merge pull request #229 from stacycurl/coproduct-rename-RemoveElem-to-Remove

Renamed Coproduct type class 'RemoveElem' to 'Remove'
Fixed hygiene bug in witness generation.
Merge pull request #232 from travisbrown/witness-hygiene

Fixed hygiene bug in witness generation.
ToTraversable[HNil, M[_], T] with T not Nothing
ToSized[HNil, M[_], T] with T not Nothing
Merge pull request #235 from alexarchambault/totraversablehnilfix

ToTraversable[HNil, M[_], T] with T not Nothing
Merge pull request #236 from alexarchambault/tosizedhnilfix

ToSized[HNil, M[_], T] with T not Nothing
Record/union refactoring and enhancements.

* Reworked Record/UnionType as Record/Union.`...`.T.
* Factored out Record/Union commonality into Labelled.
* Renamed shapeless.ops.hlist.Union to ToCoproduct.
* Added shapeless.ops.coproduct.ToHList.
* Added Record/Union named args constructor.
* Added record merge.
* Added general support for implementing named args method in terms of
  records via RecordArgs trait.
hlist ops implicit not found comments
imported implicitNotFound