Allow both keys to be symbols or strings in reflection

This fixes an issue where when #14675 was implemented or shortly we nuked the ability to accept symbols as strings. There were no failing tests because they were changed to accept strings instead of symbols.

I added some regression tests that test both associations and the reflections cache accept both string and symbols as keys. :smile_cat: 

This caused tests that used symbols to fail (of course). After a lot of trial and error I found that `with_indifferent_access` seemed to be our only course of action. I know this is not ideal and it's not generally preferred. I'm open to other ideas.

If accepted I have a branch ready for 4-1-stable as well to fix #15671 (additional work needed to be done and a simple backport wasn't going to work).