Too many bitcoins allowed in amount. (#2401)

Using magic number doesn't seem right. Could we factor this out, together with https://github.com/bitcoin/bitcoin/blob/master/src/bitcoinrpc.cpp#L96 ?
And what about BitcoinUnits::parse() as well ?
allow txindex to be removed and add a reindex dialog

- adds a reindex dialog for Bitcoin-Qt to change -txindex without the need
  to supply -reindex
- now also does a -reindex, when removing the -txindex switch
fix comment about dust logic
send tx relay flag with version
Added GNU/kFreeBSD kernel name (TARGET_OS)

uname -s returns "GNU/kFreeBSD" on Debian GNU/kFreeBSD port. See http://www.debian.org/ports/kfreebsd-gnu/
fixed: include boost header as necessary

Without this include, sometimes BOOST_VERSION was defined and sometimes
it was not, depending on which includes came before it. The result was a
random mix of sleep or sleep_for for boost versions >= 1.50.
fixed: don't use thread::sleep_for where it's known to be broken

Fixes #2690.
Update HomeBrew osx makefile patch to account for recent changes to makefile
Merge pull request #2769 from TheBlueMatt/master

Remove broken option to skip input checking for wallet txn.
Merge pull request #2766 from theuni/fix-shutdown-deadlock

Fix shutdown deadlock, ticket #2690
Merge pull request #2648 from Diapolo/txindex

allow txindex to be removed and add a reindex dialog
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.
Markdown Cleanup - Part 2

Now everything is in markdown...
Merge pull request #2763 from bitsofproof/master

Send tx relay flag with version message
Merge pull request #2760 from cozz/cozz2

fix comment about dust logic
Move implementation of some CBlockLocator methods

Move out of main.h to improve compile times and add documentation
for what the methods do.
Introduce a CChainParameters singleton class and regtest mode.

The new class is accessed via the Params() method and holds
most things that vary between main, test and regtest networks.
The regtest mode has two purposes, one is to run the
bitcoind/bitcoinj comparison tool which compares two separate
implementations of the Bitcoin protocol looking for divergence.

The other is that when run, you get a local node which can mine
a single block instantly, which is highly convenient for testing
apps during development as there's no need to wait 10 minutes for
a block on the testnet.
Pass check level, check depth to VerifyDB()
RPC: add 'verifychain', to verify chain database at runtime
Refactor keytime/metadata and wallet encryption bugfix

Refactor keytime:
* Key metadata is kept in a CWallet::mapKeyMetadata (std::map<CKeyId,CKeyMetadata>).
* When generating a new key, time is put in that map, and new key is written.
* AddKeyPubKey and AddCryptedKey do not take a creation time argument, but instead
  pull it from that map, if it exists there.

Bugfix:
* AddKeyPubKey and AddCryptedKey in CWallet didn't override the CKeyStore
  definition anymore. This is fixed, as they no longed need the nCreationTime
  argument now.

Also a few related other changes:
* Metadata can be overwritten.
* Only GenerateNewKey calls GetTime(), as it's the only place where we know for
  sure a key was not constructed earlier.
* When the nTimeFirstKey is known to be inaccurate, it is set to the value 1
  (instead of 0, which would mean unknown).
* Use CPubKey instead of std::vector<unsigned char> where possible.