Refactor into library

This change refactors the oplog-replay code into a library. It's mostly just moving around code / updating the Makefile and README.md. It exposes an interface to replay the oplog (io.Reader, speed, host) which is what I'm using right now in my initial code for the oplog-replayer (worker) so I know it's not completely unreasonable, but we may have to revisit the interface while we do that.

I also did some minor refactoring so that the library never calls panic - it only returns errors.
This function may be called in a goroutine, but internally there's no goroutine, so I think we should just return the error here (unless we think we should keep parsing, but I don't think we should). Then, where this function is called, if you need to synchronize between goroutines you can use a channel there.