Adds accept/reject nil filter blocks.
Extracts the mapping bit of RXMappingTraversal into a new method.
Renames mapping traversals to enumeration traversals.
Adds a mapping traversal strategy.
Enumeration traversals use traversal strategies.
Adds lazy filtering.

This required that we change the traversal strategy protocol to allow it to produce a different number of objects than it consumes.

The traversal also applies its strategy slightly differently, ensuring that it does not stop enumerating when it produces no objects unless it has also consumed all the available objects, since for(in) interprets a 0 count return as being the end of the enumeration.
Merge branch 'feature/lazy-filters' into develop