Fix warnings in DSL::Plugin spec
Add support for :focus tests to spec helper
Extract plugin<->provides mapping to custom class

Code to map a plugin to the attributes it provides or look up a plugin
by provided attributes was located in different parts of the code base
where it operated directly on the underlying data structure. Extracting
to a class lets us access the information we want using domain specific
terminology so things are easier to understand.
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.
Remove access to ProvidesMap internal data structure

Only test code was accessing this, modified to use the public API of the
class.
Rename variables/methods for ProvidesMap to provides_map

The name "attributes" to refer to the map of attributes<->plugins
providing attributes was confusing because it was inaccurate and often
used near a local variable named "attributes" containing a very
different kind of data (such as an Array of strings referring to
attributes another plugin depended on). Renaming to "provides_map"
clears up the confusion.
Remove no-longer-relevant "TODO"