Beginning of code refactor, rewriting core functionality

Added Doxyfile for Doxygen, currently only BP (sync) is avaliable
, other inference methods are coming. The general plan is to
eventually merge the gpu code with this, however I plan to keep this
C++11 only. However since CUDA can't handle that yet, we'll have
wrappers around them.

Currently all of the code related to inference are namespaced in the
"infer" namespace.
Skeleton code for quadratic programming implementation

Separated energy into unary and pairiwse, updated stereo.cpp
to output both sets of energies.
Added asynchronous belief propagation
Ignore the energy of nodes and edges on the sides of the grid
Fixed BP async message update order
Improved BP async performance

The messages in the BP class now represent the messages coming into the
node, this simplifies code and allows the async implementation to
propapagate messages on the edges of the grid as well
Added tree reweighed belief propagation
O(n) L1 method for trbp
Generate static library, moved example code

Separated example code from library code, added configuration in
config.mk to allow selective building with or without CUDA
Reorganised file directory

All includes are now in the include folder, sources in src
Skeleton for GPU code
Fixed cuda skeleton code, corrected mistakes

Modified code so it works for gcc 4.7. Gcc 4.7 has an issue where if a
virtual destructor was defaulted, some subclassed defaulted destructors
have an incorrect exception safety level
Makefiles now support both CUDA and non CUDA usage
Use the default destructor
Split apart the energy function
Skeleton code for BP on CUDA
Makefile option for gpu bp
Updated API for CPU implementation
Add stereo testing data
Fleshed out the CRF, added error handling