Abyss policy
------------

Pixels are read from and written to a `GeglBuffer` using the functions
`gegl_buffer_get()` and `gegl_buffer_set()`. Both functions take an
array of pixels and write/read data from tiles according to the region
of interest.

The abyss is the rectangle that defines the part of the buffer that is
readable. The abyss policy determines how the values of pixels within
the buffer but outside the abyss are interpreted. It is applied when
`gegl_buffer_get()` is called. Each policy has a separate iterator
function that reads data to the array. If the region of interest is
inside the abyss rectangle a simple read function is used to avoid the
overhead of dealing with abyss. Abyss policy also affects samplers since
they use `gegl_buffer_get()`.

There are 5 abyss policies represented by the following enums:

* `GEGL_ABYSS_NONE` - abyss pixels are zeroed
* `GEGL_ABYSS_WHITE` - abyss pixels are white
* `GEGL_ABYSS_BLACK` - abyss pixels are black
* `GEGL_ABYSS_CLAMP` - each pixel's coordinates are clamped to the abyss
    rectangle
* `GEGL_ABYSS_LOOP` - each pixel's coordinates wrap when exceeding the
    abyss rectangle (the buffer is essentially tiled)
