math: remove use of unsigned in KDTree

unsigned is declared in Qt I believe. We should only be using uint32
uint64 or size_t or int. Unsigned isn't one of our types and can cause
errors if someone builds VW with the minimum set.
Revert "math: Remove unnecessary subroutine overloading"

This reverts commit 5a25f01d129f75c4f5805a6e4e757aa93119e276.

Unfortunately that commit is only valid C++ in C++11.
ip: Add unit test for new api for matcher