Introducing REQUIRE macro

Introducing additional functionality to allow client code to stop a unit test when an assert fails.

The following macro has been added:

	REQUIRE

An example of when these type of checks are useful:

    TEST(SomeFixture, VerifyFooReturnsCorrectResultsGivenState)
    {
        /* some setup happened in the fixture, verify foo() returns 
           a vector of size 3 with correct values */
        std::vector<int> v = foo();

        REQUIRE(CHECK_EQUAL(3, v.size())); // test stops here on a fail
                                           // so we don't segfault looking at
                                           // v[0] below.
        CHECK_EQUAL(1, v[0]);
        CHECK_EQUAL(2, v[1]);
        CHECK_EQUAL(3, v[2]);
    }

Multiple checks are supported as follows:

    REQUIRE({
        CHECK_EQUAL(1, 2);
        CHECK(true);
    });

    REQUIRE(
        CHECK_EQUAL(1,2);
        CHECK(true);
    );

In the multiple check scenario, all the checks in the REQUIRE block will
be run. After which, if any failures were reported, the TEST case will
be stopped.

When UNITTEST_NO_EXCEPTIONS is defined, REQUIRE is a noop.