loop-restoration: Fix + refactor stripe boundary setup
loop-restoration: Fix + refactor stripe boundary setup

* Setup and restore the correct number of left/right boundary
  pixels at vertical tile edges, and save them in the correct
  buffers.
  Also fix the restore process in high-bitdepth mode.

* When loop filtering across tiles is enabled, we were previously
  acting inconsistently at horizontal tile borders: The stripe
  just above the boundary would use CDEF pixels from the tile below
  for context, while the stripe just below would use deblocked
  pixels from the stripe above.

  The intended design appears to have been to use CDEF pixels on
  both sides (so we logically have a 64-pixel high stripe, it's just
  split into an 8-pixel and a 56-pixel high stripe in order to keep
  the coefficient sets aligned to tiles)

  Implement that behaviour by disabling the context setup process
  when at a horizontal tile border.

* Pull some common calculations out of
  {setup,restore}_processing_stripe_boundary and into their
  common caller. This allows us to reduce the number of arguments
  going into each function and their internal complexity.

* Add more design comments around stripe boundary setup,
  as there are quite a lot of constraints to be aware of

Change-Id: Ic1586c149b7f764b9c1a711df3f11fb0f130b38a

GrokImageCompression/aom,GrokImageCompression/aom,GrokImageCompression/aom,GrokImageCompression/aom,GrokImageCompression/aom,GrokImageCompression/aom