listreceivedbyaddress now provides tx ids (issue #1149)
Updated help and tests for getreceivedby(account|address)
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.
Set CLIENT_VERSION_IS_RELEASE, bump build to 0.8.2.1
It's after 2013-05-15 forever now, so remove the code for the May 15 fork.
translations update 2013-05-19 (for 0.8.2 release)

- integrates current translations from Transifex
- new translation: af_ZA
fix memory leak in CKey::SetCompactSignature()
Fix memory leak on exception in Key::SignCompact
CreateNewBlock performance improvements
Add a few data-driven tests for SIGHASH_ANYONECANPAY
Merge pull request #2678 from TheBlueMatt/master

Add a few data-driven tests for SIGHASH_ANYONECANPAY
Update links in build-osx.md

Add link to Github for Mac
Update link to HomeBrew
gitian deps-win32.yml needs psmisc package for killall to end the build
Merge pull request #2681 from wtogami/gitianfix

gitian deps-win32.yml needs psmisc package for killall to end the build
Merge pull request #2680 from fanquake/patch-1

Update links in build-osx.md
Merge pull request #2677 from sipa/fastcreate

CreateNewBlock performance improvements
More bestblock records in wallets

Write bestblock records in wallets:
* Every 20160 blocks synced, no matter what (before: none during IBD)
* Every 144 blocks after IBD (before: for every block, slow)
* When creating a new wallet
* At shutdown

This should result in far fewer spurious rescans.
Merge pull request #2649 from Diapolo/translations

translations update 2013-05-19 (for 0.8.2 release)