Allow RuntimeDefinition to still process explicit classes

Prior to this commit, explicit classes passed to a Di RuntimeDefinition would not be processed as the already existed in the class array. This behaviour doesn't match the documentation which suggests that explicit classes provides functionality to apply different introspection strategies to different sets of classes. This commit adds tests to demonstrate this and changes to fix the behaviour
Merge branch 'hotfix/5597'

Close #5597
Merge pull request #5609 from nickpeirson/DiRuntimeDef-ExplicitClasses

Allow RuntimeDefinition to still process explicit classes
Merge branch 'hotfix/5609' into develop

Forward port #5609