Added support for treating structs like maps

Modified schema.core/map-walker so that it no longer uses `dissoc` when evaluating `clojure.lang.PersistentStruct` types.

This was necessary as `clojure.lang.PersistentStruct` is a map type yet will throw an runtime exception if `dissoc` is called on it.

All existing tests pass, along with new tests related to structs.

Additional details [here](https://github.com/Prismatic/schema/issues/128)
the every? identity isn't necessary.  valid! and invalid! throw testing assertions when they fail.