Fix recursion issue with nested instances and unions (#9663)
* Fix recursion issue with nested instances and unions
* Change to use `==` in `is_protocol_implementation`
* Add test that verifies Union[a, b] == Union[b, a]
Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>