Address io::io_error removal

Rust PR: mozilla/rust#11946

Description of changes:
* `src/codegen/{keycode.rs,scancode.rs}`: `for..in` expects a result type of `()`; with the IO changes all the `Writer` methods now return `IoResult<()>`, so a trailing `;` is required.
* `src/codegen/main.rs`: `open_mode` returns an `IoResult<File>` (an alias for `Result<File, IoError>`), so `Some`/`None` need to be replaced with `Ok`/`Err`.

An unfortunate side effect of this change is that there are now a bunch of warnings during compilation because nothing is being done with the `IoResult`s:
`warning: unused result which must be used, #[warn(unused_must_use)] on by default`
I haven't done anything to address this because I'm not sure what the best course of action is.