pyglue refactor and test suite

This was a much larger change than expected, I just wanted to make the pyglue similar to jniglue by removing some duplicated code. This shouldn't change any functionality but does add some more methods to some of the python types.

There is now a pyglue test suite in src/pyglue/test which you can run by '$> make PYTests'

A GpuShaderDesc python type has been added, the old dict interface still works but will hopefully be removed later in favour of this.

And the Baker python interface has also been added.

Added GpuShaderDesc python type
Added Baker python interface
Moved many headers into PyUtil.h
Replaced try/catch blocks with OCIO_PYTRY_ENTER() OCIO_PYTRY_EXIT(foo) macro
Added function AddObjectToModule()
Fixed todo about PyErr_NewExceptionWithDoc for python2.7
Added template struct PyOCIOObject for all OCIO types
Added PyOCIO_GpuShaderDescType
Added PyOCIO_BakerType
Added template BuildConstPyOCIO() function
Added template BuildEditablePyOCIO() function
Added template BuildPyObject() function
Added template BuildPyTransformObject() convenience function
Added template DeletePyObject() function
Added IsPyOCIOType() function
Added template IsPyEditable() function
Added template GetConstPyOCIO() function (no DynamicPtrCast)
Added template GetConstPyOCIO() function
Added template GetEditablePyOCIO() function (no DynamicPtrCast)
Added template GetEditablePyOCIO() function
Added following extra python interfaces:
  AllocationTransform().getNumVars()
  CDLTransform().CreateFromFile(src, cccid)
  Config().CreateFromStream(istream)
  Config().getNumColorSpaces()
  Config().getColorSpaceNameByIndex(index)
  Config().getIndexForColorSpace(name)
  Config().isStrictParsingEnabled()
  Config().setStrictParsingEnabled(enable)
  Config().getNumRoles()
  Config().hasRole(role)
  Config().getRoleName(index)
  Config().getNumDisplays()
  Config().getDisplay(index)
  Config().getNumViews(display)
  Config().getView(display, index)
  Config().getNumLooks()
  Config().getLookNameByIndex(index)
  Context().getNumStringVars()
  Context().getStringVarNameByIndex(index)
  FileTransform().setInterpolation(interp)
  FileTransform().getNumFormats()
  FileTransform().getFormatNameByIndex(index)
  FileTransform().getFormatExtensionByIndex(index)
  Look().getInverseTransform()
  Look().setInverseTransform(transform)
  MatrixTransform().equals(matrix)
Added following extra java interfaces:
  Baker.setLooks()
  Baker.getLooks()