Fix error handling, also migrate to go1.3

i'm not sure i understand this. won't we close done twice if there's an error: once here and once in the defer in OplogReplay? should we just send a bool into the channel?

would it be easy to write a test for this?