Add ARB_program_interface_query function calls and convenience methods

Fixes #267

I've done some rough testing, so it (and especially the convenience methods) should be working fine.
We prefer ```result.data()```.
The same applies to ```std::string``` if the length of the string is provided as a separate parameter.