graphics: Add pipeline object

Also fix an issue with shader code that was getting uniform locations
before the program had been linked.