New api calls

I've added support for a recursive get, currently without documentation, but it returns a tree of the relevant information.

I've also made some stuff take const ptr arguments where they don't need to modify the strings. This allows me to pass string.c_str() from c++ code.