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 
RSpec recommends using `RSpec.configure do |config| ... end`, and doesn't have a setter on its global configuration object returned by `RSpec.configuration` (see [rspec/core.rb](https://github.com/rspec/rspec-core/blob/master/lib/rspec/core.rb)). When we `require 'specinfra'`, [this runs](https://github.com/serverspec/specinfra/blob/master/lib/specinfra.rb#L35-L49) and adds settings to `RSpec.configuration`. This is fine when we're only running `chef-client` but when we ran `bundle exec rspec spec/unit/client.rb` (which requires `chef/audit.rb`, which required `'specinfra'`) the configuration set in `spec/spec_helper.rb` and `lib/chef/audit/runner.rb` were merged. In `lib/audit/runner.rb` we were setting formatters on `RSpec.configuration`. As a result, we were seeing double output like

```sh
    when a formatter is configured
            with no output path
      with no output path
              does not configure a default formatter
        does not configure a default formatter
              configures the formatter for STDOUT/STDERR (FAILED - 1)
        configures the formatter for STDOUT/STDERR (FAILED - 1)

#snip

            Chef::Client
      Chef::Client

Chef::Client

Failures:

  1) Chef::Client configuring output formatters when a formatter is configured with no output path configures the formatter for STDOUT/STDERR
     Failure/Error: expect(min_formatter.output.out).to eq(STDOUT)

       expected: #<IO:<STDOUT>>
            got: #<StringIO:0x007fa220dcbd50>

       (compared using ==)

       Diff:
       @@ -1,2 +1,2 @@
       -"#<IO:<STDOUT>>"
       +[]

     # snip backtrace

Failures:

  1) Chef::Client configuring output formatters when a formatter is configured with no output path configures the formatter for STDOUT/STDERR
     Failure/Error: expect(min_formatter.output.out).to eq(STDOUT)

       expected: #<IO:<STDOUT>>
            got: #<StringIO:0x007fa220dcbd50>

       (compared using ==)

       Diff:
       @@ -1,2 +1,2 @@
       -"#<IO:<STDOUT>>"
       +[]

       # snip backtrace

Finished in 0.00032 seconds (files took 2.33 seconds to load)
20 examples, 1 failure

Failed examples:

rspec ./spec/unit/client_spec.rb:159 # Chef::Client configuring output formatters when a formatter is configured with no output path configures the formatter for STDOUT/STDERR

Finished in 0.00032 seconds (files took 2.33 seconds to load)
20 examples, 1 failure

Failed examples:

rspec ./spec/unit/client_spec.rb:159 # Chef::Client configuring output formatters when a formatter is configured with no output path configures the formatter for STDOUT/STDERR

Finished in 0.00032 seconds (files took 2.33 seconds to load)
20 examples, 1 failure

Failed examples:

rspec ./spec/unit/client_spec.rb:159 # Chef::Client configuring output formatters when a formatter is configured with no output path configures the formatter for STDOUT/STDERR
              runs ohai, sets up authentication, loads node state, synchronizes policy, and converges (FAILED - 2)
        runs ohai, sets up authentication, loads node state, synchronizes policy, and converges (FAILED - 2)
  runs ohai, sets up authentication, loads node state, synchronizes policy, and converges (FAILED - 1)
            when the client key already exists
      when the client key already exists
```

The goal is to separate the `RSpec.configuration` we use during the audit phase from the `RSpec.configuration` used in our spec tests.