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 This is  a slightly modified version of heap which is specifically designed to keep the least k values seen so far. Firstly, this is a fixed size heap. So, when I call ```push``` in it, it doesn't add a node to the heap as a std heap would do. It checks if the new value belongs to the least k values' set and accordingly replaces the worst previous entry. 
Secondly and most importantly, since this heap deals with only a specialized case, it does the replace operation in a single pass, which any std heap would do in 2 passes (pop and then push). So, I am slightly inclined towards keeping this heap implementation.

Ideally, this heap class should be private to ```CNbodyTree``` because it's specific to that. But I didn't see any such design (i.e. class within class) done earlier in Shogun. So that's why I created a separate class outside.