Delegate to private methods

Issue #526
Previously if a class delegated to a private method the `matches?` method would
return `false`. This was because`respond_to?` always returns `false` for private methods, this commit fixes this by making `respond_to?` evaluate private methods.