wip
Get components into basic working state
Ignore client dir
Allow cljs data structures in event data
Use str instead of name to prevent collisions
More testing
Pass component to handlers

Need to wrap handler fns with closure on component object
Add bang for side-effect-ness
Add function docstrings
Use doto form
Start turning player-bar into a real component
Add error monads
Return mount from mount-component!

I think it makes more send to do this
Add docstring to mount-component!
Fix select to be within component's context
workon player-bar
Just use anon fn
Re-organize components

-   Replace `render` with `mount!` on PComponent
-   Add `unmount!` to PComponent interface
-   Components contain their own state/properties rather than it being
    passed to render, and don't contain their mount node.ie
    (defrecord Player [game]) instead of (defrecord PlayerBar [mount])
    This acts as the component's (immutable) state. This is needed, say,
    for an event handler that needs to inspect it self to decide if the
    event pertains to it. For instance, a PlayerIcon component might
    listen to the :player-join/:player-leave events and need to
    determine if that event applies to this component.
    -   Not setting mount-node as field on component adds more
        value to the components/select function.
-   `mount-component!` is passed a fully constructed component, rather
    than a constructor
-   Add `document-components` atom, and `unmount-constructor!` fn. When
    components are mounted, it unmounts any existing component already
    at that node. Certainly more work to be done here

/cc @jordangarcia let me know what you think
Remove 1 component per mount stuff
Rename component/select -> component/sel, add component/sel1