separate user for the frontend and the wallet #25

I don't think any table should ever have a foreign key that is the 0 user. The only table that did that was the transaction table and that's gone now. We don't technically need a 0 user, but it helps with sanity checks. I think we should put it in a separate table.

Ah, I forgot about the primary key thing.

Based on my quick search neither is obviously faster. I think we should go with plpgsql for all functions. I think that'll make our life easier in the long run.