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 it.  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)