#map: adding MappingIterable, ImmutableIterator, and MonadicFunction; creating IterableMatcher to help with JUnit assertions