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.
Dunno. In a well written program this would lead to more ops being executed, since nameLength should only be 0 if "index is greater than or equal to the number of entries in the active resource list for programInterface". You wouldn't query for that anyway, right?
So no, I don't think an early out would be useful here.