Extract ProvidesMap and tests to their own files

Also eliminates redundant tests in other classes that primarily test
ProvidesMap behavior. Higher-level tests have been left in place to
verify the interaction of the components.