c/[render|util|main]: Refactor layer squasher code
These commits does a couple of things in one go:
- The layer squasher now dispatches once per view.
- Reducing the number of samplers needed.
- Allows for per view target.
- Refactor the setup code to comp_util.
- The layout transition part now happens in new helper code.
- Makes the scratch images per view.
- Introduces a new struct that is managed by the renderer.
This lets us remove around 500 loc from comp_render.c
while they turn into some 1K loc in the comp_render.c
file the pipeline is broken up into four helper functions that allows a compositor to more easily reuse only certain parts of this code. It also makes the code much more readable in that instead of having one giant function that does everything it has been split up a bit. This also leads to there only being one place where we have 4 levels of indentation, and very few for 3.