Fix duplicate glfwDestroyWindow call in Drop impl

Probably a merge mistake
Update function pointer types for language changes
Use printfln! instead of println(fmt!(...))
Use Option type for nullable function pointers
Use .with_c_str instead of .to_c_str().with_ref