update readme
fix ->/do and test is more
rewrite ->/each, add ->/key ->/val, remove ->/keys ->vals

- ->/keys and ->/vals provided a sequence to the body, which could have made
  all kinds of mischief too easy. Removed.
- instead, ->/each now is built on clojure.walk, making it more useful for maps
  and vectors.
- new macros ->/key and ->/val play nicely with the new ->/each, which should
  support use cases where ->/keys or ->/vals might have seemed useful before.
add replace-content function to various macros

Breaking change: 1.5 is now required! (see legacy comment below)

replace-content is used to preserve the original topic as efficiently as
possible. Preserve means keeping its type and meta-data.

Update ->/first, ->/second, ->/nth, ->/last, ->/rest and ->/each to use
the new replace-content.

Update unit tests accordingly.

Add a legacy version of replace-content with limited capabilities (e.g. IRecord
is not supported) and which may be used to provide backward compatability.

Add a (commented out) protocol version of replace-content which is currently
broken since the resolution order of competing interfaces is undefined (and
actually changes between compilations).
Add compile-if macro and optimize replace-content

To support legacy versions of clojure, compile-if was added which evaluates if
condition at compile time and inject the then or else form as required. Used to
support 1.2 and it's lack of IRecord as well as unsafe versions where into lost
meta data.

Optimized replace-content to do less work if the old and new values were the
same type.
Release 1.0.3

refactor replace-content