massive URI-handling / IPC server re-work
fixed a crash caused by delete and removed ipcShutdown()
remove HTML code around "Wallet" (displayed on overview page) and use Qt tags for font settings
re-work parts of the URL-handling code
Refactor coin selection to aid unit testing.
Add unit test for coin selection.
Fix coin selection to only include change when it's necessary.
Add 'coin control' tab to allow selection of coins to use when sending and display linked addresses.
Move coin-control code inside the if(walletModel) condition.
Updates / cleanup for utility functions
Updated GetDataDir() to use filesystem::path and reduced to one version
removed make_preferred() where not needed because of new GetDataDir() / removed unneded spaces in db.cpp
Use filesystem::path instead of manual string tinkering

Where possible, use boost::filesystem::path instead of std::string or
char* for filenames. This avoids a lot of manual string tinkering, in
favor of path::operator/.

GetDataDir is also reworked significantly, it now only keeps two cached
directory names (the network-specific data dir, and the root data dir),
which are decided through a parameter instead of pre-initialized global
variables.

Finally, remove the "upgrade from 0.1.5" case where a debug.log in the
current directory has to be removed.

Because of compatibility with both boost::filesystem v2 and v3, two
helper functions file() and dir() were added that convert a path to
a const char*.
revert array init to = "" as this is allowed and much shorter than a memset()
Support for multiple local addresses
Added -externalip
Toggle main window hide on tray icon click

- converted openBictoinAction to toggleHideAction
- put GUIUtil functions into a namespace instead of a class
- put window-related functions together in optionsdialog

Reasoning:
- toggle is more typical behaviour
- it's more functional
- better UX

The typical issue with toggling visibility is that when a window
is obscured by other windows but in the 'shown' state, hiding it
isn't what you want. I've added an 'isObscured' function to GUIUtil
that checks several pixels in the window to see if they are visible
on the desktop so that an obscured but shown window can be raised.

Conflicts:

	src/qt/guiutil.cpp
	src/qt/guiutil.h
Add a menu option to verify a signed message
Added 'immature balance' for miners. Only displayed if the balance is greater than zero.

This adds a field labelled 'Immature' in the overview section under the 'unconfirmed' field, which shows mined
income that has not yet matured (which is currently not displayed anywhere, even though the transactions
exist in the transaction list). To do that I added a 'GetImmatureBalance' method to the wallet, and connected
that through to the GUI as per the 'GetBalance' and 'GetUnconfirmedBalance' methods. I did a small 'no-op'
change to make the code in adjacent functions a little more readable (imo); it was a change I had made in my
repo earlier...but I thought it wouldn't hurt so left it in. Immature balance comes from mined income that is
at least two blocks deep in the chain (same logic as displayed transactions).

My reasoning is:
- as a miner, it's a critical stat I want to see
- as a miner, and taking into account the label 'immature', the uncertainty is pretty clearly implied
- those numbers are already displayed in the transaction list
- this makes the overview numbers add up to what's in the transaction list
- it's not displayed if the immature balance is 0, so won't bother non-miners
Merge branch 'force_send' into next-test
Merge branch 'customfee' into next-test

Conflicts:
	src/init.cpp
	src/main.cpp
	src/main.h
Merge remote branch 'diapolo/fix#945' into next-test
Merge branch 'getblock_full' into next-test