Added rendering and qtopengl libraries

Implemented impostor based rendering of spheres, added the support
classes necessary to compile shaders, link shader programs, upload VBO
data and calculate the relevant camera matrices. Also added some initial
support for image comparison testing using VTK.

Added a dependecy on GLEW to handle OpenGL extensions. So far restricted
the rendering pass to features common to both GL 2.1 and GLES 2.0 (apart
from the use of gl_FragDepth in the fragment shader for the spheres).

Change-Id: I5e132a7b3e26c36a526289f3ead3d0125139c98b
Added some additional methods for use from the GUI

Minor cleanups and refactoring so that the minimal GUI can load
molecules and have the camera fit the view for example.

Change-Id: Ie1ccab853ab29112e542405085a8be1ca50ab2d3
Merge topic 'impostor-rendering' into master

ecbbcadc Added rendering and qtopengl libraries
Merge topic 'tweaks-for-avogadro' into master

67f01337 Added some additional methods for use from the GUI
Also use glew32: different library name on Windows

Change-Id: Iec1b62920843eabcf3398792217bab600e801e97
Merge topic 'add-glew-win32-lib-name' into master

ac2621fe Also use glew32: different library name on Windows
Adding plugin support to Avogadro

Adds a plugin manager to coordinate loading plugins, some initial API
for the factories that create them.

Change-Id: I487d55486e3ed4858fc3cd3499b9e81ddf9f5391
Merge topic 'plugin-api' into master

70828bc9 Adding plugin support to Avogadro
Define GLEW_STATIC on Windows

We are using the built-with-CMake GLEW on Windows.
For now, just define GLEW_STATIC because we know
the SuperBuild's glew32.lib is going to be static.

A better approach would be to build both static and
dynamic versions, and then explicitly link to the static
one. With this approach (which will work for now) we
run the risk of linker errors later on if somebody
switches the GLEW build to BUILD_SHARED_LIBS but does
not also change this add_definitions call here...

Change-Id: I233e60b160232b6bea2f81b0a4211607bb381bdd
Undefine max if necessary

The Microsoft compiler *conveniently* defines min and
max as global pre-processor macros somewhere in a file
included by one of their system headers. This causes
problems, as the macro expects arguments, and resolves
to code that's not intended here.

Just undefine it and get on with compiling already.

Change-Id: I2b3e749316f97ba10b97baa5958b77b6fe623b5b
Merge topic 'use-static-glew-on-windows' into master

b5e9eb85 Define GLEW_STATIC on Windows
Merge topic 'fix-silly-max-compile-error-on-Windows' into master

b3a823c7 Undefine max if necessary
Cleaning up the build system, extending plugins

Clean ups to use macros in the build system for libraries and plugins.
Extending the plugins to deal with a couple of different types.

Change-Id: I593ecca52f8cdd9960cdce65755f104f66e1c90c
Added file encoder, split out GLSL

Improvements to the renderer, splitting out the GLSL and encoding it
at build time.

Change-Id: Ic8cffff8d1d0d048033300b292746c6bfcec2493
Merge topic 'build-system' into master

2f37cb3a Added file encoder, split out GLSL
e8cceab3 Cleaning up the build system, extending plugins
Referencing a variable we removed

The fragNormal variable became N in code review, but we missed it being
referenced further down. This restores the shader.

Change-Id: I6d1e2ce8a88ae94181840d0ae2790abe2f62ac0d
Merge topic 'sphere-frag-shader-fix' into master

1426221c Referencing a variable we removed
Fix for installed Avogadro relative plugin paths

This is needed for Mac app bundles.

Change-Id: I817495d41c821fc28adc8bf784eaca08f36be932
Merge topic 'mac-relative-plugin' into master

fc1eeb9d Fix for installed Avogadro relative plugin paths
Bring in pugixml, replacing rapidxml

Change-Id: I881744f5c9cc3b6ca854dbdd180664039f60916a