Create option for collection matching.
Updates matchers to use collection options.
Split MapMatcher into specialized classes.

This separates keys and values matching.
Update bindings.
Update tests.
Formatter commit.