apps: Call link_directories for LittleCMS2

The bundled library sets LCMS_LIBRARIES to a full path, which means this call is redundant (but should be harmless)

However external installs might set LCMS_LIBRARIES to just the library name ("lcms2"), so the link_directories call is important (as is the case with `brew install littlecms`)

Closes #215
pyglue: fix up Python variant-path stuff

Default is to just install into something like:

lib/PyOpenColorIO.so
lib64/PyOpenColorIO.so

If OCIO_PYGLUE_RESPECT_ABI is YES, then the path will be something like:

lib/python2.6/ucs2/PyOpenColorIO.so
lib64/python2.6/ucs4/PyOpenColorIO.so

In both cases, share/ocio/setup_ocio.sh will point to the correct path
pyglue: ensure "-D PYTHON" specified version of Python is linked against

Only happens if "-D OCIO_LINK_PYGLUE=yes" is specified
nuke: internal channel handling / validate cleanup

- Cleaned up the setting of info_ in all ops _validate call

Previous versions were validating too often and had an unneccesary
early return. They now rely on PixelIop::_validate to do most of
the heavy lifting.

- Virtualized some non-virtual members in the Nuke plugin headers
- Removed deprecated ChannelSet member used for channel swizzling
- cleaned up channel processing to match OCIOColorSpace model
bump
docs: ociobakelut, Photoshop ICC, looks

- Various examples of using ociobakelut
- Upsettingly convoluted guide to making a "display LUT" for Photoshop
- Committing Jeremy's guide to Looks (closes #201)
docs: fixed ocio spelling
nuke: minor tweak internals to work around valgrind memcpy warning
docs: skeleton docs for python api, and general docs cleanup

created new approach to extract rst from source code.

This one is more braindead, using a /*+doc tag. But the verbosemess also makes
the approach more general, support all possible rst tags
core: OCIO::SetLoggingLevel(...) is now obeyed when called before initialization
core: fixed compilation error on clang
core: first pass at internal optimization framework

The internal image-procesing ops now go through a simple optimization
framework as part of Processor creation. In this first code pass, ops
that are exact inverses of their neighbors cancel out and are removed.

But the most interesting consequence is that this allows for transforms
which were not previously possible:

Say you have 2 colorspaces: A and B.  Both of these these colorspaces
apply the same 3D lut, but B then also applies an additional matrix.

Previously, it would not have been possible to compute the processor
to go directly from A to B because an inverse 3d lut is needed.
old op chain:   LUT3D (inv) -> LUT3D (forward) -> matrix

However, the new optimizer will detect that the same 3dlut is being
applied in a row in both an inverse and forward direction, and they
will cancel out! (This works even if the nesting is deep.)

new op chain: matrix

Subsequent additions to the optimizer will allow for matrix collapsing, etc.
docs: additional updates to python API docs
bump
unittest: disable serialization check that temp fails on osx
Added OCIOFindJava that supports finding the current Java version on OSX
Added initial Manifest.txt.in to be included in .jar
Added .jar creation stage
Added install targets for JNI lib and .jar archive
.jar file now gets installed in share/java/OpenColorIO-$VERSION.jar
leaned up JNI Library loading so its a bit more robust
Moved JNI System.loadLibrary into a central LoadLibrary class
JNI now builds with SOVERSION
Install jar into share/ocio
Add OCIO_STATIC_JNIGLUE option (default to ON)
ocioconvert: pass arbitrary attributes to OIIO

Adds --float-attribute, --int-attribute, --string-attribute

Useful for reducing bitdepths/image quality settings from the maximum.
bump