Resolve annotations against namespace and use statements.

This PR is an updated version of #1279 (see also #730). At this stage, it's just a request for feedback, <del>but if reception is good, I'd be happy to expand the new resolution rules to other annotations like `@covers` etc.</del> actually, I just went ahead and did these too.

To recap, this PR allows the user to utilize `namespace` and `use` statements to shorten the class name for `@expectedException` annotations. I also expanded on #1279 to add similar support to the `@expectedExceptionMessage` and `@expectedExceptionCode` annotations. Relevant tests were also added/updated.

This is currently done using a branch of [Cosmos](https://github.com/eloquent/cosmos/tree/feature/pathogen-based), which will become the next major version as soon as people are happy with this PR.

FYI, Cosmos now fully supports PHP 5.6 `use function` and `use const`, which means no problems with resolution when you move to support 5.6 in future.

**EDIT:** Added resolution for `@covers`, `@coversDefaultClass`, and `@uses`, with tests.
If you mean catching the exception, this would only happen in the rare case that an `@expectedExceptionMessage` or `@expectedExceptionCode` annotation's value contains a `::`, but the value as a whole is not a valid constant.

This as actually popped up as a bug from testing against against Symfony 2, where they have a few annotations like [this](https://github.com/symfony/symfony/blob/b57024e68c136e343e3532c1f54194bf7e585036/src/Symfony/Component/Process/Tests/ProcessBuilderTest.php#L218). I'd say it happens very rarely; only when an expected exception message contains a literal class-constant-like string.

The alternative to catching the exception is to use a regex to ensure the annotation's value is a valid class constant before attempting to create the symbol. But since the regex for a valid symbol in PHP is quite complicated, I didn't think it was a great idea.