buffers: improve gegl_buffer_set_pattern

- don't ignore the input rectangle
- offsets are integer
- limit the number of babl conversions
- that implementation linearizes the whole pattern in a single memory chunk,
  which is still bad
- See Bug 712814 for more details
tests: add a hgrad helper function to generate horizontal gradients
tests: add a test case for gegl_buffer_set_pattern
operations: tile doesn't try to allocate the whole input
tests: add a test case for gegl:tile
operations: don't enforce the babl format in tile.c