refs #665 Fix a serious bug introduced by calling the BSONObj copy
constructor on a temporary variable. This manifested itself when
a primary was writing update objects to the oplog - the data appeared
corrupt. I still don't fully understand why calling the copy constructor
here is bad - it might have to do with the implementation of
operator boost::intrusive_ptr= on a temporary value (since the contained
char * in the temp bsonobj was defintely valid...)

What a nightmare.