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.
Actually, ```c_str()``` here is perfectly okay. :laughing:
It is also required, since ```data()``` may not have a null-terminating character, whereas ```c_str()``` will always have and the OpenGL API needs a null-terminated string in this parameter.