Equality for most types

Most types should now support `-eq`:

* characters
* strings
* maps
* vectors
* sets
* ISeqables

Additionally, maps and sets can now be used as functions as they can be in Clojure and vectors, maps and sets now support `contains?`. (IAssociative got a new `-contains-key` protocol method for that.)

I'd like to add tests for `-eq`, but #36 blocks that for now. Apart from that, I think that this is ready to merge, but I'd appreciate if someone would take a closer look at it before doing that.
@halgari `@extend(_eq, ISeqable)` didn't work, do you know why? I'd rather not expose helper functions if possible.