Fixed #23338 -- Added warning when unique=True on ForeigKey

This PR is similar to #3196 but with the tests and the updated documentation as requested.
I think he's just pointing out that ForeignKey(unique=True) and OneToOneField aren't entirely equivalent as we've found out. The existing error message could mislead someone is this respect.

For the failing tests, I guess we should leave them as `ForeignKey(unique=True)` and try to silence the warnings.