[BUG][Wallet] Restore AddressBook when marking used keys in the keypool
[BUG][Wallet] Restore AddressBook when marking used keys in the keypool

**Problem:**
If a HD wallet uses some keys, and is later restored to a previous state
(initial backup), it correctly recognizes the used keys and relative
transactions, and spending from the relative addresses works fine.
Although, these addresses are not shown in the receive widget of the
GUI, so their label cannot be edited, and they cannot be easily
selected/copied.

**Cause**
When adding a transaction in `AddToWalletIfInvolvingMe`, the wallet
loops over the outputs and checks if it affects any key from the keypool
(supposed to be "unused"), in which case, it removes the key from the
pool (`ScriptPubKeyMan::MarkUnusedAddresses`).

After restoring the old backup, when initializing the receive widget
(and address table model), with `getAddressToShow`, there is no unused
address in the AddressBook, and a new one is created.
`getNewAddress` accesses the key pool and returns the first unused key.
Since the used keys have been removed, this is a brand new address.
All addresses relative to the keys removed from the pool in
`MarkUnusedAddresses`, therefore, never enter the AddressBook, and thus
are never shown in the receive widget.

**Solution**
When removing the key from the pool (in `MarkReserveKeysAsUsed`), also
add the missing address to the AddressBook, with receive/coldstaking
purpose.

This way, when restoring an old backup, the user loses only the labels
(that were added after the wallet.dat backup) but can still repopulate
his AddressBook with all the previously used addresses.
Darknet-Crypto/Darknet,PIVX-Project/PIVX,Darknet-Crypto/Darknet,Darknet-Crypto/Darknet,PIVX-Project/PIVX,Darknet-Crypto/Darknet,PIVX-Project/PIVX,PIVX-Project/PIVX,PIVX-Project/PIVX,PIVX-Project/PIVX,Darknet-Crypto/Darknet,PIVX-Project/PIVX,Darknet-Crypto/Darknet,PIVX-Project/PIVX,PIVX-Project/PIVX