Splitting PixelRoutine into PixelProgram and PixelPipeline

This cl splits PixelRoutine into 2 specialized classes:
PixelProgram and PixelPipeline.
In this cl:
- Moved all specialized behavior of PixelRoutine into the
  PixelProgram and PixelPipeline classes.
- Inverted hierarchical dependency between PixelRoutine and
  QuadRasterizer. QuadRasterizer is now the base class.
- Added a check to PixelProcessor::routine() to either create
  a PixelPipeline object or a PixelProgram object.
- Moved a few interpolation related utility functions from
  PixelRoutine down to QuadRasterizer.
- Added Registers hierarchy. PixelProgram specific Registers
  and PixelPipeline specific Registers are now mutually
  exclusive.
- Made the quad functions virtual
- Added a few virtual functions (setBuiltins, ps, alphaTest,
  rasterOperation) for Program/Pipeline specific implementations

Bug 20257503

Change-Id: I6abe536a5521d9842f757a8bbb52e3947e3c9250
Reviewed-on: https://swiftshader-review.googlesource.com/3634
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
14 files changed