Clean up wallet encryption code.

Add a new method `DecryptKey` in `crypter.cpp`, that combines the logic for decrypting, initialising and validating a `CKey` object.  This was previously duplicated.

Note that the verification of the public key was not done for `GetKey` before (only while unlocking).  I don't think that it is a problem to check the validity of the key also in `GetKey`, though.
It means the function is local to the compilation unit (the object file produced from this .cpp file), and can't be accessed from outside. That means that it doesn't have to be unique (there cannot be a collision with a function with the same name elsewhere), it can allow more optimizations (for example if all cases can be inlined, there doesn't need to be a full separate version of it), and it reduces link time (because the symbol doesn't need to be exported).