This describes how the Point Merge filter is supposed to work using the 
uniform grid approach.

The user parameters
- points : points to merge together using delta
- delta : The maximum distance between two points to merge together

1. Construct necessary parameters to bin points into the cells of a unifrom 
   grid with spacing given by delta.

2. Calculate the necessary : dims importantly
   The product of the dims should fit into the cell ids.
   For each dimension we'll require to calculate the
   cube root of numeric_limit<32/64 bit int>.   
   The above equation for each dimension, will determine the efficiency of the
   point searches within a certain cell. 
   With 64 bit the grid will be fine with fewer points per cell.
   With 32 bit the grid will be corse with more points per cell.
   
   Bin points using a worklet, find the ones that are within distance `delta`
   from each other.
   
   However, we may spend a lot of time processing a lot of cells, even when
   delta is pretty huge (we should limit grid spacing to a minimum of 2 delta)
   This will make worklets faster when we have points which are pretty distant

3. Merge necessary points that are in the same bin.
   Cell Ids will act as the keys to the merge points together.
   - Merging will require a distance check between two points to merge together.
   - The number of points that will be merged together will not be known prior.
     We might need an ScatterCounting worklet.
     1. Get the count of points that will be merged together for each cell Id.
     2. Produce the actual merge of points.
   - Can the global map be filled properly this way? Need to see.

Choosing a proper grid resolution based on delta.

Based on the data type, the grid resolution should not exceed the limit of the 
data type used to index cells.
So given delta, how to make an efficient grid spacing?
has to be a function of delta.
