Improve dispose handling.  Allows stream filters (like take) to dispose their sources properly without having to request a next item