Fix incorrect use of Dispose in ShaderProgramCache

The finalizer was telling Dispose(bool) to dispose of managed objects, which is incorrect.  This was causing a crash on exit.