Use instance_exec passing self as an argument for dynamic attributes

Calling `block.call(self)` means any implied scope of block evaluation
goes out the window when an arity of 1 is used. This change uses
`instance_exec`, passing along self as the argument for the block
variable, meaning that the block is still invoked within the context of
the FactoryGirl::Evaluator while allowing the variable to have access to
the evaluator.

Closes #529