Add node.is_leaf column and revamp tree animations.

Before, tree animations were a mess. Now we have clear "from" and "to"
and "updatedAt" properties. It's not perfect, but at least it's clear
what's intentional and what's icky.

The node.is_leaf parameter changes our client-server API a bit. Now,
a request for a node's children does not produce *that* node's children.
Instead, the server attaches an isLeaf parameter, telling the client
whether it should continue descending.