drop workaround for bitcoin v0.1.5
Revert "PPCoin: More stack trace dump during serialization"

This reverts commit 59f05238ced81a41dff7499b6b7e1699bdbf9629.

Conflicts:
	src/serialize.h
Revert "PPCoin: Stack trace dump for ReadCompactSize() exception"

This reverts commit 17382b40fae13629d0a7c77806bd9e73972f061d.

Conflicts:
	src/makefile.unix
	src/serialize.h
	src/util.cpp
	src/util.h
Reject non-canonically-encoded sizes

The length of vectors, maps, sets, etc are serialized using
Write/ReadCompactSize -- which, unfortunately, do not use a
unique encoding.

So deserializing and then re-serializing a transaction (for example)
can give you different bits than you started with. That doesn't
cause any problems that we are aware of, but it is exactly the type
of subtle mismatch that can lead to exploits.

With this pull, reading a non-canonical CompactSize throws an
exception, which means nodes will ignore 'tx' or 'block' or
other messages that are not properly encoded.

Please check my logic... but this change is safe with respect to
causing a network split. Old clients that receive
non-canonically-encoded transactions or blocks deserialize
them into CTransaction/CBlock structures in memory, and then
re-serialize them before relaying them to peers.

And please check my logic with respect to causing a blockchain
split: there are no CompactSize fields in the block header, so
the block hash is always canonical. The merkle root in the block
header is computed on a vector<CTransaction>, so
any non-canonical encoding of the transactions in 'tx' or 'block'
messages is erased as they are read into memory by old clients,
and does not affect the block hash. And, as noted above, old
clients re-serialize (with canonical encoding) 'tx' and 'block'
messages before relaying to peers.

Conflicts:
	src/main.cpp
	src/test/serialize_tests.cpp
Only send reorged txn to mempool after checkpoint

Conflicts:
	src/main.cpp
Fix multi-block reorg transaction resurrection

Conflicts:
	src/main.cpp
Revert "Partially revert "Remove broken option to skip input checking for wallet"

This reverts commit 7c2f170a5917037b9bdeabfe40eeee70cbb0533f.

Conflicts:
	src/main.cpp
	src/main.h
schedule hardfork
new block timestamp limits

past: time of last block
future: +15 seconds
change block time from 60 to 64 seconds
new stake protocol
block version 7

use double sha256 instead of scrypt for block hash
using scrypt provides no advantage and is orders of magnitude slower
adapt stake miner to new protocol
adapt GetStakeWeight() to new protocol
adapt GetPoSKernelPS() to new protocol
remove mention of -staking from help
round displaying weight up to coin
update split/combine thresholds for new protocol
update pos target limit
force testnet