Remove all uses of string evals
Created by: myronmarston
Using define_method
over eval'ing a string is nearly always better:
http://tenderlovemaking.com/2013/03/03/dynamic_method_definitions.html
We've had to use string eval in some cases in order to dynamically define methods that take blocks because 1.8.6 yields syntax errors when blocks accept blocks. In 3.0 I'd like all dynamic method definition to use define_method
rather than eval'ing a string.