qt: allow user to choose data directory

This adds an introduction screen that is shown when the client is first
started in which the user can choose a data directory.

It is also possible to force the intro screen to appear using command
line argument `-choosedatadir`.

The user is warned that the client will download and store 10Gb of data.
The intro screen shows how much space is available on the device that
contains the chosen directory and warns if this is less than the 10Gb.

To make it possible to translate the introduction dialog, the initialization
sequence is changed so that translations are
loaded before the data directory. This has the by-effect that it is
no longer possible to specify a language in bitcoin.conf inside the data
directory.
Log reason for non-standard transaction rejection
Log aborted block database rebuilds
Squashed 'src/leveldb/' changes from aca1ffc..ae6c262

ae6c262 Merge branch 'leveldb' into ripple-fork
28fa222 Looks like a bit more delay is needed to smooth the latency.
a18f3e6 Tidy up JobQueue, add ripple_core module
ab82e57 Release leveldb 1.12
02c6259 Release leveldb 1.11
5bbb544 Rate limit compactions with a 25ms pause after each complete file.
8c29c47 LevelDB issue 178 fix: cannot resize a level 0 compaction set
18b245c Added GNU/kFreeBSD kernel name (TARGET_OS)
8be9d12 CondVar::SignalAll was broken, leading to deadlocks on Windows builds. http://code.google.com/p/leveldb/issues/detail?id=149
c9fc070 Upgrade LevelDB to 1.10.0, mostly for better write stall logging.
8215b15 Tweak to variable name to support unity build

git-subtree-dir: src/leveldb
git-subtree-split: ae6c2620b2ef3d5c69e63dc0eda865d6a39fa061
Merge commit 'adae78ea9940f4d44382967d1296e7db0b54a4de' into leveldb-squashed
RPC: add getbestblockhash, to return tip of best chain
let user select wallet file with -wallet=foo.dat

use std::string instead of psz for WalletFile

only allow wallets within $DATADIR

Use strWalletFile in salvage/recover

fix: remove unused variable pszWalletFile

move strWalletFile to init.h/init.cpp

avoid conversion of strWalletfile to c-string
Add wtogami to gitian download scripts.
Made the build/release process completable verbatim as listed in
release-process.md
Make the rand tests determinstic. (fixes #2714)

This avoids spurious errors with the old tests but still tests
 enough that if the rng is replaced with a totally broken one
 it should still fail.
Merge pull request #2796 from gmaxwell/remove_overactive_rand_tests

Make the rand tests determinstic.
Merge pull request #2816 from wtogami/gitianwtogami

Add wtogami to gitian download scripts.
Merge pull request #2817 from Michagogo/release-process-followable-verbatim

Made the build/release process completable verbatim as listed in release-process.md
Remove readme-qt.rst and update documentation for readme-qt.md
Merge pull request #2820 from fanquake/remove-readme-rst

Remove readme-qt.rst and update documentation for readme-qt.md
Merge pull request #2812 from jgarzik/rpcbestblock

RPC: add getbestblockhash, to return tip of best chain
Merge pull request #2743 from jgarzik/reject-reason

Log reason for non-standard transaction rejection
Fix minor backward incompatibility

The key refactor changed the way unencrypted private keys with compressed
public key are stored in the wallet. Apparently older versions relied on
this to verify the correctness of stored keys.

Note that earlier pre-release versions do risk creating wallets that can
not be opened by 0.8.3 and earlier.
fix invalid conversion error with MinGW 4.8.1 in net.cpp

- fixes src\net.cpp:1601: Error:invalid conversion from 'void*' to
  'const char*' [-fpermissive] in a setsockopt() call on Win32 that was
  found by using MinGW 4.8.1 compiler suite
Merge pull request #2825 from sipa/incompatkey

Fix minor backward incompatibility