Saving and restoring cwd in GLFW backend.

Ready for review! Closes #659.
The init command *might* error out after making the directory change (don't know GLFW code internals well enough to guarantee it doesn't), so this would be better:

```
try:
    if not ...:
        raise OSError...
finally:
    os.chdir(cwd)
```