Code cleanup

Inlined single usage of MatchResult.apply static function
Reduced Should and ShouldNot duplication
Extracted common matching functionality

This reduces the code duplication between 'should' and 'shouldNot' verification
functions. It also removes the need for pattern matching in the 'itShould' and
'itShouldNot' implementation.
Removed applyGroup function

The function itself did not implement usable functionality for writing general
tests. The function was only used by the tests for the DSL itself.
Updated readme about self-running test assembly