Less restrictive type bounds for ThrowableCauseMatcher

Prior to this change, ThrowableCauseMatcher.hasCause() required
the cause matcher to be a matcher for the type of the outer
exception. This change allows a matcher for any Throwable sub-type
as the matcher to apply to the cause.
Merge pull request #982 from pettermahlen/cause-matcher-type-variance

Less restrictive type bounds for ThrowableCauseMatcher