Some small performance optimizations

method(:x).call => send(:x)
Don't instantiate strings for logging when we don't need to.
Do recursion with real methods instead of procs, since its faster and avoids creating procs
Instantiate less memorypointers
Use eval for defining information methods because calling such methods is faster than those created via define_method. See http://www.matijs.net/blog/2011/04/22/benchmarking-dynamic-method-creation-in-ruby.
Fix compilation error in cherry-pick of df0029584.