A lazy version of Collection.split

LazyEmptyAdmittingUnlimiitedSplitCollection is my adaptation of the sample type from the blog, so it keeps the same limitation of a simpler Index type at the cost of having to calculate the endpoint every time. The other sample types came later, and follow the suggestion at the end of the blog to change the Index type to also cache the end of each split range.