Use method_defined? for portability

Replace calls to instance_methods.include?(:symbol) with
method_defined?(:symbol) as this is more portable and prevents a Stack
Level Too Deep exception when running on Ruby 1.8 which returns an array
of String objects in instance_methods rather than symbols which Ruby 1.9
will return.