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 
I'd like to dig a little deeper into why moving the requires to here fixes things, to see if there might be a more robust solution. I'm not aware of a way that changing _where_ you require something can change the behavior, instead I think we're seeing these effects because of _when_ we require things; in other words, there are two competing things that are altering global state and we need one of those to "win" over the other one. But is there a way we can avoid that altogether? If not, is there a way we can more explicitly ensure things are required in the right order?