Abstract all IPC communication to qtipcserver
Alert system DoS prevention

This fixes two alert system vulnerabilities found by
Sergio Lerner; you could send peers unlimited numbers
of invalid alert message to try to either fill up their
debug.log with messages and/or keep their CPU busy
checking signatures.

Fixed by disconnecting/banning peers if they send 10 or more
bad (invalid/expired/cancelled) alerts.
Bugfix: Move boost::interprocess Win32 workaround to Bitcoin-Qt sources, rather than hacking boost in gitian
Bugfix: Adjust gitian-win32 to use Boost 1.49 for real
Special-case the last alert for alert-key-compromised case

Hard-code a special nId=max int alert, to be broadcast if the
alert key is ever compromised. It applies to all versions, never
expires, cancels all previous alerts, and has a fixed message:
   URGENT: Alert key compromised, upgrade required

Variations are not allowed (ignored), so an attacker with
the private key cannot broadcast empty-message nId=max alerts.
Merge branch 'bugfix_gitian' of git://github.com/luke-jr/bitcoin
Fix compiler warning on mac
Merge branch 'alert_fix' of git://github.com/gavinandresen/bitcoin-git
Upgrade to Boost 1.50
Version numbers -> 0.7.0
Update release notes
Add boost chrono lib for windows builds (required for boost 1.50)
Check for canonical public keys and signatures

Disabled for now.
Compact serialization for variable-length integers

This commit introduces a new variable-length encoding for arbitrary integers.
They use a least-significant-digit-first base 128 encoding, where each byte
contains 7 bits of information, and one bit denoting whether another byte
follows. To avoid redundancy, however, all bytes except the first one
select a value in the range 1-128 instead of 0-127.

Thus, the byte sequence a[] where all but the last has bit 128 set, encodes
the number (a[0] & 0x7F) + sum(i=1..n, 128^i*((a[i] & 0x7F)+1)).
Compact serialization for variable-length integers: tests
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.
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.
Compact serialization for amounts: tests

Test cases to verify the correctness of the custom amount serializer.
Add CTxUndo: transaction undo information

The CTxUndo class encapsulates data necessary to undo the effects of
a transaction on the txout set, namely the previous outputs consumed
by it (script + amount).