def-macros now support doc-strings
minor bug fixed and more tests added
removed repeated code with a nice macro adapted from clojure.core.protocols
updated examples to reflect new features