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.
This will cause allocation on every call to `rt.next(seq)`. Instead use a call to `.reduce`. If a comparison fails, then return `rt.reduced(false)`, that will short-circuit the reduction.