Mixins

This adds a new feature to empower React mixins for Om applications. Checkout the README changes for additional description.

Overview:

*   Add `om-tools.mixin/defmixin` macro that looks and behaves similar to `defcomponent`/`defcomponentk`
*   Add mechanism to specify mixins from `defcomponent`/`defcomponentk` & generate custom constructor

Some things I would like some feedback on:

*   Any preference on `defmixin` being part of `om-tools.core` or stay in separate namespace?
*   Is the `(:mixins my-mixin)` syntax within component macro clear? Any suggested alternatives?
*   Is it clear how custom mixin methods are accessed from base component? (via (.) access) See example in README
 I believe it won't actually break, but the macro does emit non-ideal code.

```clojure
(defcomponent widget [data owner]
  om.core/IRender
  (render [_] ...))
```

Would produce:

```clojure
(defn widget [data owner]
  (reify
    om.core/IRender
    om.core/IRender
    (render [_] ...))
```

which is technically okay, because you are not required to fully implement protocols.

Given that this isn't new behavior, I'm inclined to leave this alone for now.

I think the overarching issue is if/how we allow extension of other (non-Om) protocols (without `specify!`), but there are API design decisions to be made there