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