Extract DSL::Evaluator from existing DSLs

Both the Modulefile and Puppetfile DSL classes implemented this
functionality duplicately. This forces standardization of behavior
between all DSLs while DRYing up behavior.