Support fixed rate oplog replaying (ops per second)

This change adds an interface for controlling the rate at which we apply
op logs. Theoretically this interface could control the rate at which
more generic things are done. Though it's similar to the leakybucket
abstraction we already have, the relative rate ideas we have didn't
cleanly map onto the leakybucket so I thought this new interface was
useful. I considered doing the interface slightly differently -
returning a time to wait until applying the operation instead of just a
boolean. I ended up going with this because it a slightly simpler
interface, but I could probably be convinced the other one is better.

This change also adds to implementations of the interface. The fixed and
relative rate controllers we want for oplogs. It also adds a new command
line parameter to control which rate controller we use in the replay. It
defaults to the fixed rate.
I modeled it off of some of the factory method stuff I've seen (admittedly mostly in java). The advantages are that it shrinks the interface, especially if you have a lot of implementers of the interface. Instead of needing to know all those methods you just need to need to New and the names of the types.

Also, as Raf's example shows, it's nice if you want to dynamically register implementers of the interface.