Make contacts temporary

Only store federated contacts in localStorage and update cached contacts after a configurable amount of time.
Remove old contacts from wallets as they are opened since they are no longer used.
Abstract [reverse]federation into the contacts utility.

Since federation results are subject to change we have to request them on each new session, so there is no reason to save them in the wallet. Federated contacts are now cached in localStorage and not saved in the wallet.