Less restrictive type bounds for ThrowableCauseMatcher

Currently, the ThrowableCauseMatcher factory method enforces the same type restrictions on the current exception and the desired cause - this means that the test case in ThrowableCauseMatcherTest in this pull request doesn't even compile, although it makes sense as code.

This change does a few things:
1. Separate the type bounds on the root exception (T in the class definition) from the type bounds on the cause (? extends Throwable).
2. Clarify that the matcher field is used to match against the cause, not the current exception.

I'm not sure if it's possible to get better than Matcher<?>, but I think the current implementation is incorrect. I'm also not 100% sure what impact, if any, this change would have on backwards compatibility of the API.