Port samples to glfw3

NOTE: I realize now that I should have resisted my urge to replace tabs with 4 spaces in all 3 main.cpp files... It's a habit. I'll re-do the changes without that if you want.

  * Most of the changes were just straight API changes documented in glfw's own porting guide. In some cases, default behavior changed, such as the need to explicitly make the context current after creating the window, or the need to poll the keys explicitly where before it would do it automatically in the call to swapbuffers.
  * The number of keys and key indices changed. This could be tidied up if app.h could just include glfw3.h... It could use key symbols instead which would be less brittle.
  * The fullscreen toggle required changes as the window can no longer be destroyed and recreated directly in the key callback.
  * I added the COPYING.txt file from the glfw3 sources so that the license of the code included directly in the repo is clear.