Additional tweaks for Enumerator::Lazy

* Fix each_with_index use in #drop.
* Fix subtype preservation in *with_index methods.
* Handle all-arrays and all-not-arrays in #zip like MRI.
* Handle no-arg zip when given a block.
* Properly implement zipping past the end of one or more args.