Remove non-determinism in `Which`

This provides the simple solution mentioned to the issue described in the comments at https://github.com/dennisdoomen/fluentassertions/commit/e3cb66e0a94e56d8c6b9c2153f83ea38092413be#comments concerning the use of `And` and `Which` in conjunction with the flattening of Aggregate Exceptions.

After doing that I noticed there were some places elsewhere in FA where Which could be asserting against the wrong object or an indeterminate object.  This also corrects these cases by throwing an exception.

Only the first commit (covering Exceptions) contains covering Unit Tests at this point.  I will go back and add the missing ones, but will not yet tonight and wanted to get this out there in case you would not be wanting these sort of changes.