Separate wallet keys from sibling keys

Wallet keys are now completely independent from sibling keys during
bootstraping, something that enables the client to create a generic
wallet that doesn't expose the private key of the sibling. It's
important to keep them separate for anonymity reasons.

This commit is partially hacked together, and a restructuring of the
bootstrapping procedure is probably needed. Luckily, this should mostly
entail changing variable names and moving functions to different files,
with just a bit of code restructuring thrown in. Nothing as nasty as
we've done in the past.
homogenize errors in client-cli
Set and enforce naming conventions
provide cli support for joining - there are errors
pariticipants can now join, but when the third one joins they all kick eachother.
fixed snapshot failure issue
fix multi-join, debugging statments not removed
merge Luke's changes
add a minimal framework for creating wallets.
rename BootstrapWalletID to FountainWalletID
change PK and SK to PublicKey and SecretKey
untested infrastructure for requesting a wallet
restore functionality for requesting wallets from the fountain wallet.
I think it works for real now
beautification
Merge pull request #196 from DavidVorick/wallets

Working, tested, non-buggy (I'm pretty sure) consensus, adding generic wallets.