adds test with empty zip()
Supports empty zip(); removes Zipped<T>

Instead of specializating on Zipped<T>, specialized for Zipped<T, Ts...>
and lets the normal Zipped class (non-specialized) handle the 0 type
case. It makes the template instantiation recursion one level deeper by
using an empty base case, but in doing so eliminates the duplicate logic
in the one-type specialization, and supports zip() as well.