Tyler Breland: Dinodex solution r1

revision from Dan Schepers code review
This method is probably the first ugly code I've seen so far from this, so I'm guessing all the complexity is hiding in here. I say "guessing" because this is hard to read. :)

Suggested refactor:

```
def do_where(args)
  @data = data.map(&:to_h).select do |row|
    row.all? { |key, value| match?(row[key.to_sym], value) }
  end
end
```

This involves making sure that your rows have a `.to_h` defined on them (which should be the case already). This is more idiomatic than asking this class to understand how to cast other classes. It also makes much better use of the idiomatic `.all?` and `.select` iterators in ruby, which are pretty much made for this purpose.