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.
How about:

    return nil unless opts.kind_of?(Hash)

I'd prefer not to raise an error.  Perhaps incorporate a [logger](http://www.ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logger.html) instance and log a `WARN` describing the malformed arguments.