Several LG changes to Stefan's contrast functionality.
* Pare down the number of contrast() variants to only two: one that takes
  the full per-channel contrast and pivot arrays, and one that takes scalars
  and adds contrast to the luminance (we call this contrast_lum).
* Use more modern idioms for type dispatch and parallelism in IBA::contrast.
* Don't clamp to 1 -- allow high dynamic range input and output. Add a
  parameter to the contrast functions specifying whether or not they should
  clamp to 0 as a lower bound.
* Changed luminance to assume Rec709 primaries and linear response; the
  previous one is a commonly-used formula that is also commonly misunderstood,
  as it has 2.2 gamma correction built into it.
* In oiiotool, simplify the error checking by assuming that if not enough
  contrast or pivot values are supplied, they will default to 1 and 0.5,
  respectively; and if too many, the extras will be ignored.  Also simplify
  the handling of alpha channels by assuming that all channels have pivots
  and contrast scales, and that non-color channels like alpha will be
  given a scale of 1.0, or users gets what they deserve.
Document oiiotool --contrast
testsuite for oiiotool --contrast