Split inferWriterDriver into two

Per #340, the 2-argument `infer{Reader|Writer}Driver` might try to do too much by both modifying options and finding the correct driver. This patch splits the `inferWriterDriver` into two pieces. The `inferWriterDriver` part does just that, while a new method, `inferWriterOptionsChanges`, modifies an options object based upon a given filename.