Made api more Ruby-like and fixed some bugs.

These are some changes that I made a while back. I thought the api was maintained by shopstyle, so I submitted the PR to the wrong fork. Here it is again.
lets do `opts = {:search => opts} if opts.kind_of? String` here too instead of raising an error.