Move glfw::terminate() out of destructor, is hanging app under linux

There's a race condition between tasks (or something along those lines) that causes glfw::terminate() to hang if called in the destructor.  Moving it out of the destructor fixes the issue under linux.

It might be worth having someone more familiar with the rust internals look at why this was happening eventually.

Fixes #1097.