Refactor GetNaNColorAsUnsignedChars function

Instead of repeating the same code refactor into on function. This will
make further edits easier and improve extensibility (this will be used for
the GetMaximumColorAsUnsignedChars and GetMinimumColorAsUnsignedChars
functions).
Refactor the index lookup in vtkLookupTable

This will simplify the necessary additions for the Min and Max colors.
Refactor shift and scale computation throughout vtkLookupTable
Add minimum and maximum colors to vtkLookupTable

Add the option UseMaximumColor and UseMinimumColor to allow to use the
MinimumColor and the MaximumColor.
Add MinimumColor and MaximumColor option to vtkColorTransferFunction
Update vtkDiscretizableColorTransferFunction for Min and Max colors change

Make sure that the Min and Max colors are clearly propagated in
vtkDiscretizableColorTransferFunction between the color transfer function
and the vtkLookupTable.

Also add helper function to vtkColorTransferFunction so the API looks
more similar to vtkLookupTable.
Add minimum and maximum color to vtkScalarBarActor - WIP