Missed optimizations

- freezing constant string to ensure it's not mutated
- use constant where available
- optimize `respond_to?` to not allocate array.

Discussed in #737 and #739

`respond_to?` takes two arguments all recent rubies:

- http://ruby-doc.org/core-2.1.3/Object.html#method-i-respond_to-3F
- http://ruby-doc.org/core-1.9.3/Object.html#method-i-respond_to-3F
- http://ruby-doc.org/core-1.8.7/Object.html#method-i-respond_to-3F

Also `method_missing` will return a symbol from the first argument, we don't need to allocate a string:

- http://ruby-doc.org/core-2.1.3/BasicObject.html#method-i-method_missing
- http://ruby-doc.org/core-1.9.3/BasicObject.html#method-i-method_missing
- http://ruby-doc.org/core-1.8.7/Kernel.html#method-i-method_missing

cc/ @raggi 
simpler to write as

```ruby
case method_name
  when :to_ary, 'to_ary'
    false
  else
    super or @body.respond_to?(method_name, include_all)
  end
end