First implementation of extensible conditions API
Refactor: Extract functions to condition implementations
Refactor: Extract functions to condition implementations
Refactor: Move message handling into Value class
Refactor: Move type handling into Assert::that()
Add descriptive messages
Refactor: Extract values to methods