Refactor DbMessage a little.  The reserved field is used infrequently so precomputing and storing a pointer to it is not really necessary.  So this change makes the DbMessage struct 8 bytes smaller without penalty. While at it i made a couple of the pointers const to self document their immutable nature. Also reservedField() now is const and not returning a reference, i dont see any use of it in that form it woudl be easy to add that version in if needed.
Attempt to improve performance of primary when secondaries are pulling oplog
data from the primary.

On a low latency network, if secondaries are "caught up" they may pull very small
getmore batches from the primary.  This will result in a medium high getmore ops per
second rate on the primary and some lock contention for local db lock. In addition
it is better for the secondary to apply batches that aren't tiny (given its parallelism
model).

There was already a notion of this with AwaitData in the primary-side code however
very often on the follow-up getmore request there is at least one or two new ops to
pick up so the short sleep there doesn't really kick in so much.

The change is to sleep for a short interval before asking for more oplog if we are
caught up.  We infer we are "caught" up if the last batch received was not very big.
shared_ptr is lighter right?