use done channel to signal cancellation

- use a done channel to signal pipeline cancellation
- use an ordered map (bson.D) for ops, fixes oplog-replay for go1.3