Check for canonical public keys and signatures

Only enabled inside tests for now.
CAddrMan: verify pchMessageStart file marker, before reading address data

This avoids the case where you read the address data, before noticing it is
the wrong network.
Bitcoin-Qt: convert tray and main menu tooltips to statustips

- the converted tooltips were used with GUI elements that don't display
  tooltips (tray icon and main menu)
- add a global event filter on qApp to prevent garbelled text on the
  status bar, which happens when we use it for e.g. displaying block-sync
  state and then a QEvent::StatusTip wants to write own text to it
- remove a double translation of "Bitcoin client"
Merge pull request #1931 from laanwj/2012_10_newicons

Non-GPL Icons, v2
Revert "Merge pull request #1931 from laanwj/2012_10_newicons"

This reverts commit 199d88cf901866f3c2fa2b5bd83074d11ebad02c, reversing
changes made to 65bc1573e73791c26472c3177732b7d167aa5bec.

License is worse instead of better. Will only accept public domain and
MIT-licensed icons from now on.
Use CHashWriter also in SignatureHash(), and for message signing
Move external block import to separate thread
Merge remote-tracking branch 'diapolo/Qt_tooltips'
Merge pull request #1742 from sipa/canonical

Check for canonical public keys and signatures
Merge pull request #1880 from sipa/threadimport

Move external block import to separate thread
Import LevelDB 1.5, it will be used for the transaction database.
Leveldb Windows port by Edouard Alligand, adapted for MingW by me.
Disable libsnappy detection in LevelDB
Backport Win32 LevelDB env from C++0x to C++

Since the gitian mingw compiler doesn't support C++0x yet.
Makefile integration of LevelDB
LevelDB glue

Database-independent glue for supporting LevelDB databases.

Based on code from earlier commits by Mike Hearn in his leveldb
branch.
Compact serialization for variable-length integers

Variable-length integers: bytes are a MSB base-128 encoding of the number.
The high bit in each byte signifies whether another digit follows. To make
the encoding is one-to-one, one is subtracted from all but the last digit.
Thus, the byte sequence a[] with length len, where all but the last byte
has bit 128 set, encodes the number:

  (a[len-1] & 0x7F) + sum(i=1..len-1, 128^i*((a[len-i-1] & 0x7F)+1))

Properties:
* Very small (0-127: 1 byte, 128-16511: 2 bytes, 16512-2113663: 3 bytes)
* Every integer has exactly one encoding
* Encoding does not depend on size of original integer type
Compact serialization for scripts

Special serializers for script which detect common cases and encode
them much more efficiently. 3 special cases are defined:
* Pay to pubkey hash (encoded as 21 bytes)
* Pay to script hash (encoded as 21 bytes)
* Pay to pubkey starting with 0x02, 0x03 or 0x04 (encoded as 33 bytes)

Other scripts up to 121 bytes require 1 byte + script length. Above
that, scripts up to 16505 bytes require 2 bytes + script length.
Compact serialization for amounts

Special serializer/deserializer for amount values. It is optimized for
values which have few non-zero digits in decimal representation. Most
amounts currently in the txout set take only 1 or 2 bytes to
represent.
Add CCoins: pruned list of transaction outputs

The CCoins class represents a pruned set of transaction outputs from
a given transaction. It only retains information about its height in
the block chain, whether it was a coinbase transaction, and its
unspent outputs (script + amount).

It has a custom serializer that has very low redundancy.