Build fixes for Arnold 4.1.

Arnold 4.1 removed some typedefs we were using, and introduced two new required functions in output drivers.
Fixed hangs when using procedurals with more recent arnold versions.
Merge pull request #177 from johnhaddon/arnold41

Arnold 4.1 Compatibility
Fixed default PYTHON_LINK_FLAGS for OS X builds.

This is the same fix we've been using in Gaffer for a long while.
Added face normals mode to MeshNormalsOp.

This is specified with a new "interpolation" parameter which specifies the interpolation type of the normal primitive variable created. Currently supported values are "Uniform" for face normals and "Vertex" for per-vertex normals as before.

While doing this I experimented with using PolygonIterator.h and PolygonAlgo.h in place of the existing setup. PolygonIterator did make the code much clearer, but added approximately 7% overhead so I rejected it. Using polygonNormal() from PolygonAlgo.h dealt with concave normals and colinear faces correctly, but added ~40% overhead, so I rejected that too because for our current uses we value speed more than correctness.
Optimised polygonNormal and polygonWinding in PolygonAlgo.h.

This is achieved fairly simply by halving the number of iterators and using prefix increment in place of postfix increment.
added AI_TYPE_BYTE case to ToArnoldConverter.cpp
Merge pull request #179 from compso/aiByte_fix

added AI_TYPE_BYTE case to ToArnoldConverter.cpp
Fixed GL shading of polygon meshes with "N" primvar.

This is achieved by computing a Uniform "N" in the ToGLMeshConverter. Because up till now the GL MeshPrimitive didn't support Uniform data, the "N" is immediately converted to FaceVarying also in the ToGLMeshConverter. This new conversion makes the conversions taking place inside the IECoreGL::MeshPrimitive totally redundant unless someone is using the MeshPrimitive class directly without a converter. Note that the MeshPrimitive actually doesn't have enough information to support Uniform data directly because it doesn't have the faces prior to triangulation. For this reason, I think there's a very good case for ditching the internal conversions in MeshPrimitive, and making the MeshPrimitive constructor need only the number of triangles, and not the vertex ids (which are used purely for conversion).

Fixes #118 and ImageEngine/gaffer#110.
Deprecated IECoreGL::MeshPrimitive::MeshPrimitive( vertIds ).

For forwards compatibility, ToGLMeshConverter should be used in preference.
Merge pull request #182 from johnhaddon/faceNormals

OpenGL polygon shading fix