Changes selection logic and adds caching to selection so it only selects a new nav if the controller is not matched to the currently selected nav