Client Reorganization

This PR is overall just a code cleanup. I moved a bunch of functions, merged a few functions, and changed the way that generic wallets are used and represented in the client.

Overall, I think the codebase is much better as a result of this PR, though I did break Josh's unmerged build (I almost guarantee it).
You can omit the `Resp` field if it's nil.