Schematized defmulti

Alternative to #105 and #111 with simpler implementation.  Includes reworked tests from @nahuel -- what do you think of this version?  Based on previous PR #118 , so please review that first.
I think `s/both` should be `schema.core/both`. I think this now works because is only called from `schema.core-test` were `schema.core` is required as `s`, but will fail in user code with a different `require` declaration.