Fix program refcounting assertion failure during context tear-down

When purging the program hash table, the refcount _should_ be one since
the program is referenced by the hash table.  Need to explicitly set to
zero before calling delete().

Also, purge high-level shader hash tables before low-level program hash tabl

cherry-picked from master
1 file changed