Fix issue with renderpass and updating shaders
Fixes issue #18192 (closed)
Basically the logic for testing renderpass mtime did not support multiple primitive types in one mapper. But used a single value. This change makes the renderpass mtime checks beprimitive based like the ighting checks are.
Moves these checks into a protected class to keep them together and a biot cleaner.