gegl: backend_swap_find_offset extend the search beyond 1st gap

and stored tiles were not reinserted in the gap_list when destroyed
or voided while gap_list was NULL

in gegl_tile_backend_swap_cleanup do not dereference unconditionally
'gap_list', it could be NULL in presence of buffer leaks and
warn_if the 'gap_list' isn't the size of the swap file