Hash.empty calls overridden #initialize when used from a subclass
Set.empty calls overridden #initialize when used from a subclass
Vector.empty calls overridden #initialize when used from a subclass
Make LazyList#realize private, not protected

There is no reason for it to be protected; it doesn't need to be called from
subclasses.
Make Hash.new spec slightly more concise
List#span only calls block once for each element
Allow temporary objects to be GC'd after a partitioned List is fully realized
Added comment to Partitioned#realize