Type selectors, zipWithKeys enhancements

Contains:
- HList/Coproduct/Witness type selectors
- minor tweaks to Record/Union type selectors (type literals and empty records/unions allowed, like in the HList/Coproduct ones)
- zipWithKeys enhancements

Supersedes https://github.com/milessabin/shapeless/pull/270, https://github.com/milessabin/shapeless/pull/271, and https://github.com/milessabin/shapeless/pull/272.