Refactor DSL methods and CleanRoom

Thanks @ivey for helping me figure out these magical contexts :smile: 

This is a refactor of CleanRooms in general and our DSL. I've moved our DSL into it's own file entirely. This keeps a logical separation of what is DSL and what is not. I've also created the CleanRoom in such a way that it's not tied to any particular class or DSL module (it's not even tied to Berkshelf).