Remove #define loop from util.h

Replace the loop macro with while (true). The #define caused
problems for Qt.
GetDataDir(): cache paths for each network separately
Refactor: CAddressBookData for mapAddressBook

Straight refactor, so mapAddressBook stores a CAddressBookData
(which just contains a std::string) instead of a std::string.

Preparation for payment protocol work, which will add the notion
of refund addresses to the address book.
Refactor: Move GetAccountAddresses to CWallet
Rework when SelectParams is called
Route qDebug() messages to debug.log
Payment Protocol: X509-validated payment requests

Add support for a Payment Protocol to Bitcoin-Qt.

Payment messages are protocol-buffer encoded and communicated over
http(s), so this adds a dependency on the Google protocol buffer
library, and requires Qt with OpenSSL support.