Refactor assertions to better follow convention and make more flexible

Goal of this refactor is to follow more of an `assert($expected, $actual)` format. Additionally the Constraints should only be passed the information needed to perform the assertion and nothing extra. Lastly the `$config` param has been removed from the assertions. Now the assertions will not be in charge of arranging or acting in the tests which should be done before the assertions and will allow more flexibility and easier debugging. This will also move the library towards offering functional use of the assertions so that projects will not have to be coupled to the base test cases.