SERVER-15187 Add OperationContext parameter to restoreState

Storage engines might need the current OperationContext to restore their
state.

For example, BDBRecordIterator needs access to the current underlying
transaction to recreate an underlying cursor. Having the BDBRecordIterator
save a pointer to the OperationContext it was created with won't work,
because the OperationContext is destroyed and a new one created between
saveState and restoreState.