`getrawchangeaddress` should fail when keypool exhausted

An user on IRC reported an issue where `getrawchangeaddress`
keeps returning a single address when the keypool is exhausted.
In my opinion this is strange behaviour.

This commit is twofold:
- Change CReserveKey to fail when running out of keys in the keypool.
- Add a Python RPC test for checking the keypool behaviour in combination
  with encrypted wallets.