Significant change to the gridder api

- Broke out the bounds into their own parameters
- Added a return value of the bounds that were used on the gridder
I think this can be re-written as
```
for target, input_vals in ((dqn, (nx, ny, nz), (qmin, (xmin, ymin, zmin), (qmax, (xmax, ymax, zmax)):
    for j, in_val in enumerate(input_vals):
        if in_val is not None:
            target[j] = in_val
```