[added] getAsyncProps for route handlers

Stuff to do for server rending integration:

- [x] don't replace the HTML (253bc1ae)
- [x] get data from multiple promises (db8298a00)
- [x] add some nested routes and make sure they work
- [x] get `activeRouteHandler` to work again
- [ ] wait for async props to load before changing the previous screen by default (avoid flickers, assume data fetching is fast)
- [ ] add option to `<Route/>` to not wait for data to load (opt in when you expect it to be slow)
- [ ] add some indication to route handler being transitioned from that it is on the outs while data loads for the next route

---

This commit adds the ability for route handlers to load props
they need for a given route, optionally asynchronously. Props
loaded in this manner cascade from route handlers further up
the hierarchy to children, such that props loaded by children
take precedence.

getRouteProps should return a "hash" of props, the values of
which may either be immediate or deferred using promises. As
promises resolve, forceUpdate is used to re-render the `<Routes>`.
If no props are promises, the operation is fully synchronous
and route handlers will have all the props they need on the
initial render.

As implemented, this work should satisfy the use cases in #319,
 #261, #314, #374, and (indirectly) #262.