All over the place

I'm not really sure what happened with this PR. It started with me just wanting to make some tests, but then for some reason I was working on the front end. I'm not really sure what the flow was from there-to-here, but the end result is that the wallet interface has been cleaned up a bit, the api has been cleaned up a bit, the front end has been cleaned up a bit, at least with regards to wallets.

Sorry about the explosion of stuff. I think at some point I decided to clean up pretty much everything with regards to wallets & the wallet code. There are still a few bugs that I'm running into but I wanted to open this as it's already pretty monstrous.

Bugs should be fixed later today, hopefully accompanied by unit tests that can trigger them.
what does it mean if `exists == false`? Just that the diff is invalid?