Remove IsFromMe() check in CTxMemPool::accept()

Fixes issue #2178 : attacker could penny-flood with invalid-signature
transactions to deduce which addresses belonged to your node.

I'm committing this early for code review; I still need to write up
a test plan.

Executive summary of fix: check all transactions received from the network
for penny-flood rate-limiting before adding to the memory pool. But do NOT
ratelimit transactions added to the memory pool:
  - because of blockchain reorgs
  - stored in the wallet and added at startup
  - sent from the GUI or one of the send* RPC commands (CWallet::CommitTransaction)

The limit-free-transactions code really should be a method on CNode, with
counters per-peer. But that is a bigger change for another day.
Add optional transaction index to databases

By specifying -txindex when initializing the database, a txid-to-diskpos
index is maintained in the blktree database. This database is used to
help answering getrawtransaction() RPC queries, when enabled.

Changing the -txindex value requires a -reindex; the client will abort
at startup if the database and the specified -txindex mismatch.
Replace leveldb/ with vanilla 1.7.0
Remove Snappy support
Native Windows LevelDB port

Import native Windows LevelDB port by Hiram Chirino.

Extracted from from https://github.com/chirino/leveldb.git using
git diff dd0d562..aea83b7
Pre-Vista leveldb::port::InitOnce implementation
Mingw support for Windows LevelDB port
Port leveldb to MinGW32

Several changes to make the native windows leveldb code compile
with mingw32 and run on 32-bit Windows:
* Remove -std=c++0x dependency (modified code to use NULL instead of
  nullptr)
* Link with -lshlwapi
* Only #define snprintf/etc if compiling with Visual Studio
* Do not link against DbgHelp.lib (wrote a CreateDir instead of using
  DbgHelp's MakeSureDirectoryPathExists
* Define WINVER=0x0500 so MinGW32 can use the 64-bit-filesystem Windows
  api calls
* Define __USE_MINGW_ANSI_STDIO=1 to use MinGW's printf (which supports
  %ll)

I also cleaned up makefile.mingw, assuming that dependencies would be in
the standard /usr/local/{include,lib} by default but allowing overriding
with make DEPSDIR=... etc
added utility to dump leveldb files
Fix corruption bug found and analyzed by dhruba@gmail.com

https://groups.google.com/d/msg/leveldb/Kc9JxuIUu5A/9P0N9RL4ar8J
Let limitfreerelay=0 reject ALL free transactions
Merge pull request #2207 from gavinandresen/leveldb19

Leveldb19
spendfrom.py sends coins from a particular address or addresses

Should be both useful and also a pretty good demonstration of
using the raw transactions API.
Merge pull request #2168 from sipa/txindex

Add optional transaction index to databases
full translations update

- fetch current translations from Transifex
- update bitcoinstrings.cpp and bitcoin_en.ts
Merge pull request #2213 from Diapolo/translations

full translations update
Check only 288 blocks at startup by default
Merge pull request #2222 from sipa/check288

Check only 288 blocks at startup by default
Merge pull request #2182 from gavinandresen/addressoracle

Remove IsFromMe() check in CTxMemPool::accept()
Treat non-final transactions as non-standard

At least one service that accepted zero-confirmation transactions
was vulnerable because an attacker could send a transaction
with a lock time far in the future, and then have plenty of time in
which to get a double-spend mined (perhaps from a miner who wasn't
on the network when the first transaction was broadcast).

That is a variation on the "Finney attack". We still don't
recommend anybody accept 0-confirmation transactions as final
payment for anything. This change keeps non-final transactions
from appearing in the wallet, and, assuming most of the network
accepts this change, will prevent them from being relayed until
they are final.