Port the app over to the new data framework I've been working on

I should describe how this code works in this space, but I've been doing that over the phone for the past few days and hopefully the code is understandable to begin with.

Note that this breaks the paths that currently exist on the client side. I've chosen to prefix all the data paths with '/_' to distinguish them as paths that will never be navigated to directly.

I've used a number of other similar(ly obscure) conventions in here, which mostly have reasons behind them, so if you don't know why I did something just ask and maybe I'll have a reason.