Unit tests are passing.

The ProgramCache variant of the CL monad is now nicely defined as an
extension of the Resource variant.

Added notes and a helper function to deal with wanting to release an
OpenCL context while holding on to a Vector wrapping OpenCL-allocated
memory (as produced by an Out kernel parameter).