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)
From my understanding, I think that thread is talking about a more complicated scenario (avoiding the warning in `:use`rs of the namespace in question) -- for this case, I think the exclusions should normally take care of it.  Perhaps the warning is in ClojureScript, since you added the `:refer-clojure` with a `#+clj` tag?

If it can't be avoided simply, I'm fine living with the warning for now.