`getrawchangeaddress` should fail when keypool exhausted + add tests

An user on IRC reported an issue where `getrawchangeaddress` keeps returning a single address when the keypool is exhausted. In my opinion this is unexpected behaviour.

In this commit:
- Change CReserveKey to fail when running out of keys in the keypool.
- Make `getrawchangeaddress` return RPC_WALLET_KEYPOOL_RAN_OUT when unable to create an address.
- Add a Python RPC test for checking the keypool behaviour in combination with encrypted wallets.

The other uses of CReserveKey::GetReservedKey are:
- In `CWallet::CreateTransaction`: right after unlocking the wallet, so no problem
- In the internal miner in `CreateNewBlockWithKey`: the miner thread will exit when it cannot reserve a key. In This can happen with an encrypted wallet when the keypool is exhausted. As the internal miner is only used for testing, I think we can live with this.
Right, that may be it - I want to debug this and know for sure before I merge this.

Regarding the 'default key', after this pull it is only used to detect whether this is the first run with a wallet. A later pull could remove it entirely.