Improvements to shader API; use handles instead of raw pointers.