message: Batch construct batches
  Reuse the serialization buffers used for constructing the LevelDB
  write batch. This avoids 2 allocations per utxo write.
diff: @@ -53,38 +53,41 @@ private:
  const CDBWrapper &parent;
  leveldb::WriteBatch batch;
  + CDataStream ssKey;
  + CDataStream ssValue;
  +
  public:
  /**
  * @param[in] parent CDBWrapper that this batch is to be submitted to
  */
  - CDBBatch(const CDBWrapper &parent) : parent(parent) { };
  + CDBBatch(const CDBWrapper &_parent) : parent(_parent), ssKey(SER_DISK, CLIENT_VERSION), ssValue(SER_DISK, CLIENT_VERSION) { };
  template <typename K, typename V>
  void Write(const K& key, const V& value)
  {
  - CDataStream ssKey(SER_DISK, CLIENT_VERSION);
  ssKey.reserve(DBWRAPPER_PREALLOC_KEY_SIZE);
  ssKey << key;
  leveldb::Slice slKey(&ssKey[0], ssKey.size());
  - CDataStream ssValue(SER_DISK, CLIENT_VERSION);
  ssValue.reserve(DBWRAPPER_PREALLOC_VALUE_SIZE);
  ssValue << value;
  ssValue.Xor(dbwrapper_private::GetObfuscateKey(parent));
  leveldb::Slice slValue(&ssValue[0], ssValue.size());
  batch.Put(slKey, slValue);
  + ssKey.clear();
  + ssValue.clear();
  }
  template <typename K>
  void Erase(const K& key)
  {
  - CDataStream ssKey(SER_DISK, CLIENT_VERSION);
  ssKey.reserve(DBWRAPPER_PREALLOC_KEY_SIZE);
  ssKey << key;
  leveldb::Slice slKey(&ssKey[0], ssKey.size());
  batch.Delete(slKey);
  + ssKey.clear();
  }
  void Clear()
  