Result filtering on search (also known as Partial Search)

First take at refactoring search to allow selective results, rather than returning the whole thing.
We should make this more informative, also. Even the default ruby error message is a little better:

```ruby
def foo; end
foo(:bar, :baz)
# => ArgumentError: wrong number of arguments (2 for 0)
```

Also, if we only accept 3 total arguments, then could we not just change the method definition to:

```ruby
def search(type,query="*:*", options={}, &block)
  # code
end
```