make CBase58Data class use zero_after_free_allocator

- this way there is no need for an explicit destructor, who does the same
  thing anyway
move start of miner out of net.cpp's StartNode()

The internal miner is closely bound to the wallet engine,
not the blockchain engine.
Split off hash.h from util.h

Conflicts:
	src/util.h
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.

Conflicts:
	src/main.h
Make CPubKey statically allocated

Conflicts:
	src/hash.h
CSecret/CKey -> CKey/CPubKey split/refactor

Conflicts:
	src/base58.h
	src/key.cpp
	src/key.h
	src/keystore.cpp
	src/rpcdump.cpp
	src/rpcwallet.cpp
	src/test/bloom_tests.cpp
	src/test/script_P2SH_tests.cpp
	src/wallet.cpp
	src/wallet.h
	src/walletdb.cpp
	src/walletdb.h
Make signature cache store CPubKeys

Conflicts:
	src/script.cpp
Use CHashWriter also in SignatureHash(), and for message signing

Conflicts:
	src/rpcwallet.cpp