listreceivedbyaddress now provides tx ids (issue #1149)
Updated help and tests for getreceivedby(account|address)
remove obsolete and unused typedef for Windows
Remove leveldb in preparation for git-subtree
Squashed 'src/leveldb/' content from commit aca1ffc

git-subtree-dir: src/leveldb
git-subtree-split: aca1ffc4b65be5e099b2088c6e6a308d69e1ad73
Merge commit 'c25e98186d0f716451ef000e55646d25e014f573' as 'src/leveldb'
Use boost::asio::deadline_timer for walletpassphrase timeout

New method in bitcoinrpc:  RunLater, that uses a map of deadline
timers to run a function later.

Behavior of walletpassphrase is changed; before, calling
walletpassphrase again before the lock timeout passed
would result in: Error: Wallet is already unlocked.

You would have to call lockwallet before walletpassphrase.

Now: the last walletpassphrase with correct password
wins, and overrides any previous timeout.

Fixes issue# 1961 which was caused by spawning too many threads.

Test plan:

Start with encrypted wallet, password 'foo'
NOTE:
 python -c 'import time; print("%d"%time.time())'
... will tell you current unix timestamp.

Try:

walletpassphrase foo 600
getinfo
EXPECT: unlocked_until is about 10 minutes in the future

walletpassphrase foo 1
sleep 2
sendtoaddress mun74Bvba3B1PF2YkrF4NsgcJwHXXh12LF 11
EXPECT: Error: Please enter the wallet passphrase with walletpassphrase first.

walletpassphrase foo 600
walletpassphrase foo 0
getinfo
EXPECT: wallet is locked (unlocked_until is 0)

walletpassphrase foo 10
walletpassphrase foo 600
getinfo
EXPECT: wallet is unlocked until 10 minutes in future

walletpassphrase foo 60
walletpassphrase bar 600
EXPECT: Error, incorrect passphrase
getinfo
EXPECT: wallet still scheduled to lock 60 seconds from first (successful) walletpassphrase
Check for correct genesis

At startup, check that the expected genesis is loaded. This should prevent
cases where accidentally a datadir from the wrong network is loaded
(testnet vs mainnet, e.g.).
Make FindBlockByHeight constant-time.

Remove the pnext pointer in CBlockIndex, and replace it with a
vBlockIndexByHeight vector (no effect on memory usage). pnext can
now be replaced by vBlockIndexByHeight[nHeight+1], but
FindBlockByHeight becomes constant-time.

This also means the entire mapBlockIndex structure and the block
index entries in it become purely blocktree-related data, and
independent from the currently active chain, potentially allowing
them to be protected by separate mutexes in the future.
It's after 2013-05-15 forever now, so remove the code for the May 15 fork.
osx: make use of the 10.8+ user notification center to display growl like notifications

- if 10.8, use user notification center, if <10.8, use growl

Signed-off-by: Jonas Schnelli <jonas.schnelli@include7.ch>
Replace repeated GetBoolArg() calls with Checkpoint::fEnabled variable
set once at init time.
Don't attempt to resize vector to negative size.
Make CPubKey statically allocated
CSecret/CKey -> CKey/CPubKey split/refactor
Make signature cache store CPubKeys
Merge pull request #2657 from gmaxwell/its_after_may15_forever

It's after 2013-05-15 forever now, so remove the code for the May 15 fork
Move pMiningKey init out of StartRPCThreads

This commit decouples the pMiningKey initialization and shutdown from the RPC
threads.

`getwork` and `getblocktemplate` rely on pMiningKey, and can also be ran
from the debug window in the UI even when the RPC server is not running.

Solves issue #2706.
Merge pull request #2104 from al42and/listreceivedbyaddress_txids

listreceivedbyaddress now provides tx ids (issue #1149)
Merge pull request #2693 from jgarzik/checkpoint-bool

Replace repeated GetBoolArg() calls with Checkpoint::fEnabled variable set once at init time