rather than require an unbuffered file object, let's just flush after each record.
better hoovering, getblocks, wait_for extended.

BaseConnection.get_block, get_tx: these did not belong in the base class.
BlockHoover:
  reworked a bit.
  default target to current height.
  in_flight_sem: limit the number of requests in flight.
  drain_queue_thread: uses block-on-pop of self.queue.
  get_block: no more ValueError, release sem.
  add_block: yield_slice (though I think it's disk I/O, not outpoints).
  block_to_db: feed to recent_blocks here, only during hoovering.
Connection:
  wait_for: delete from self.waiting here in a finally clause.
  get_block, get_tx: rewritten, use block name as key.
  cmd_getblocks: implemented
  maybe_wake: for get_block, get_tx
go:
  G.logger: don't use unbuffered i/o.
  log 'starting'.
resync stream, and app-specific frobbing.
unpack_getblocks.
trying to detect & handle forks in real time.
cmd_status: split into status & connections.
Merge branch 'update-2014' of github.com:samrushing/caesure into update-2014