!UPSTREAM: Add gl_context::ComputeProgram

TODO:
- Search for more code that needs to use this.
!UPSTREAM: Implement state atom brw_cs_prog.

TODO:
- This patch folds in a lot of prep work that should be split out to separate patches.