Bail out if none of the required components are found

The way the test was written earlier, it would accept if it found
components that were transitively pulled in even if the originally
requested component was not!
Try to do without unnecessary dependencies

UMFPACK is by default dependent on CHOLMOD, but on some systems it is
compiled with -DNCHOLMOD; in those cases we should not try to link in
the library -- it may not be available and in any cases it is not used,
so it is just a superfluous dependency.
Include CMakePushCheckState on our own

Functions in this library was made available by other unrelated
modules, making this file unusable on its own.