KD-Tree and Ball tree added in a unified interface

- ball tree added
- kd tree added
- max heap data structure added for utility purposes
- both trees unified under common interface - ```NbodyTree```

Ok, I just saw how these getters are implemented so they cannot be const. Disregard the comment above :-)