Add a Chef::Audit::Controls object to help with namespacing

This solves two of the problems we are currently seeing:

1. RSpec configuration shared by audits and our own spec tests cause undesired behavior when running `rspec`,
2. Serverspec types interfere with Chef DSL (e.g., `package`).

\cc @tyler-ball @sersut 
https://github.com/rspec/rspec-its/blob/master/lib/rspec/its.rb#L141
`require 'rspec/its'` is the first item to load the configuration.  Rspec uses a global `configuration` object and always uses what it thinks is the reference is.  It isn't a singleton because you can call `Configuration.new` any number of times, but RSpec only uses the 1 instance it knows of internally.

https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/matchers/dsl.rb#L32
`require 'serverspec/matcher'` uses some RSpec matcher logic to add new matchers, and this is the second time the config object is accessed.

https://github.com/serverspec/specinfra/blob/master/lib/specinfra.rb#L35
`require 'specinfra'` is the third time the configuration object is accessed.

Finally, we access the config object when calling `configure` on line 53.

Even though we're running these requires only after finding a `controls` block and entering it, we still don't have a unique context.  After leaving the first `controls` block and entering the second `controls` block, the config object is still the same.