Support streams as icon arguments

eg. `(clojure.java.io/input-stream (clojure.java.io/resource 'icon.png'))`

I switched the multimethod into a protocol, which should make it easier for third parties to extend the types of icon supported.

This is similar to the other issue I raised, where a resource from a jar couldn't be used.

I've updated the documentation a bit as well, but I've left the version number in project.clj and readme alone.