Use the cleanroom gem for evaluating DSLs

I recently wrote a [cleanroom gem](https://github.com/sethvargo/cleanroom) which encapsulates DSL evaluating logic from a variety of projects. In particular, this change prevents the Ridley vs Chef namespace conflict by making the cleanroom inherit from
Object instead of the default inheritance chain.

Furthermore, I added tests for the new DSL methods, ensuring the public API remains intact.