.gitignore fixes

Catch more vim swap files.
Make /src/plate more specific with leading /
Improved exception handling in main()

GNU's C++ runtime seems to be quite scant on details of uncaught exceptions,
so I hope this small improvement gives us more info in the general case.

Maybe we should rethrow instead of return 1 though. With GNU's C++ runtime on
Linux, this will SIGABRT and with the typical config, core dump, which could
be even more useful than seeing std::exception::what().
ShaderProgram class; shader source on disk

The new ShaderProgram class provides a convenient interface for typical needs
wrt reading and compiling shader source code and creating and linking
programs. It also contains (UNTESTED!) capability to reload shaders from disk,
while retaining the older, working (or at least, successfully compiled and
linked) shaders in the event of encountering an error when loading new shaders
source code.

PLATE::Display class was modified to take advanate of this new class, and all
queries for vertex attribute locations and uniforms were encapsulated in a new
small method, in anticipation of being able to take advantage of the
aforementioned "reload" shader feature.
Merge pull request #3 from hdon/master

Shader abstraction; miscellanious improvements