Hierarchical Merging

# Examples

#### `thresh=40`
![40](https://cloud.githubusercontent.com/assets/3823490/3928338/85888a96-2408-11e4-8c5b-e2b3d05bf693.png)

#### `thresh=40`
![40_2](https://cloud.githubusercontent.com/assets/3823490/3928340/8c746aaa-2408-11e4-823c-943fa45b167f.png)

#### `thresh=40`
![ball_40](https://cloud.githubusercontent.com/assets/3823490/3928345/9ac0be24-2408-11e4-8f1a-3fe758ed3023.png)

#### `thresh=60`
![60](https://cloud.githubusercontent.com/assets/3823490/3928354/aafcdbc4-2408-11e4-9701-c2471166a1f5.png)

#### `thresh=60`
![car_60](https://cloud.githubusercontent.com/assets/3823490/3928363/c02292b4-2408-11e4-8a0d-e4983adc51b1.png)






@vighneshbirodkar but some edges repeat, so the new tuple will have to point back to the same `data` dictionary...?

You can track the tuples and mutate them (well, they would have to be lists), so that you can have `g[x][y]['heap_item'] = tup`. This allows you to invalidate on demand.