Move matchers out to own module and experiment with iterator chaining
Seperate searching type and value namespaces.