Document cs_wallet lock and add AssertLockHeld

- Document what the wallet lock is protecting (did I get this right?)


     /// Main wallet lock.
     /// This lock protects all the fields added by CWallet
     ///   except for:
     ///      fFileBacked (immutable after instantiation)
     ///      strWalletFile (immutable after instantiation)

- Add locking assertions to wallet to all methods that access internal fields and do not aquire the cs_wallet mutex (and add comment why the lock is needed)