implement SPV storage backend and network logic

The backend is based on LevelDB, and stores only block headers and transactions it has been
told to watch for. If it is used, the node will set a bloom filter on all connections,
and receive filtered MerkleBlock's, stripped of most transactions we don't need.
Can sync the chain from network or import from local data files, and notify listening
clients about received transaction outputs.
end-to-end integration tests for spv mode (WIP)
storage api: rename 'depth' to 'height', remove unneeded get_ prefixes
comments in storage models