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.
Maybe it has to say ```nameLength - 1```, because you want to write ```length``` bytes into the vector, where later you assert, that ```length == nameLength - 1```.