preserves the record type when validating a map-schema

This issue was brought up on #68.

Perseving the type is required in some cases when other schemas, in a 
composite schema,  are relying on the type information being present
(e.g. s/protocol). See the new test case for an example of this.

I should point out that the added `record?` util fn is redundant in
Clojure 1.6.x and so the following error will be printed:

    WARNING: record? already refers to: #'clojure.core/record? in namespace: schema.utils, being replaced by: #'schema.utils/record?

`record?` hasn't been added to ClojureScript yet.

Before merging this in could you give me some guidance on how I can use
a cljx project as a lein checkout?  I wanted to test this locally in my
own project but couldn't figure out the best way to do that.  Even when I do
`lein install` I get the following compile error:

    No such var: schema-macros/compiling-cljs?, compiling:(plumbing/fnk/impl.clj:352:19)
I tried adding `record?` to my exclusions but I still get the warning. Based on [this thread](https://groups.google.com/forum/#!topic/clojure/nar5vIAUo1c) you have to live with the warnings unless you want to resort to some ns hacks.

If you want to avoid the WARNING I think the better approach may be to use a different name. Would that be your preference?