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 (none at all in the suggested solution).
1. Clarify that the matcher field is used to match against the cause, not the current exception.
1. Clarify that the type parameter in the factory method is different from the type parameter of the class by changing the name to U.

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.
This is never used. Could you either indicate that it's here as a compilation check, or add a test that the tests in the class pass?

Either way, please update it so the test would pass; `allowUseOfPecs()` should throw something :-)