Requirements

Added Requirements trait to support 'require', implemented using scala macro.  'require' does the same thing as 'assert' except it throws IllegalArgumentException instead of TestFailedException/TestCanceledException.