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```

@iglesias missing class docs are not on purpose. Actually implementing this heap was a diversion from the actual tree implementation, so I did it in a hurry and left the docs to be done later. As you and I can see, I obviously forgot to add docs later! let me add them.

Also, please tell me if I should divide the PR into parts.