SortWith annotation for TestClass with default implementations

This pull request provides @SortWith annotation for TestClasses. It takes a Class as a value and uses it to sort methods within test class. It allows users to write their own implementations. Three built-in implementations are available: default, name ascending and JVM. @SrotWith replaces @FixMethodOrder annotation.

I've decided to write a new pull request like @kcooney pointed out in #998. There is another pull request with @SortWith: #882, but it went too far and it is stuck with no ongoing work. I've read all comments and I hope this implementation would be accepted.
I don't think it makes sense to allow construction of a `ComparableMethodSorter` with a `null` comparator. Instead, the constructor should throw a `NullPointerException` if you pass in a `null`