Simplify

I took a very simple approach to this. So far it has seemed to work out pretty well for me here: https://github.com/slamdata/slamdata. There's probably a whole slew of bugs in here waiting to come out, but I thought this might be a nice start for a rewrite.

Please review/comment/suggest.
I think there's a problem. Consider this:
```
let d = div {className: 'hello'} in [d [text 'hello'], d [text ' world!']]
```
because both components share the same props `{className: 'hello'}` and React mutates `props` when it receives `children`, we will have `hellohello` rendered instead of `hello world!`.