Initial Raw commit

* Does not use longjmp for error handling (modified from original).
* Does not use any globals.
* Additional macros for test data creation and usage.
* The correct file name where the assert failed is reported (it may have failed in a file other than the test is implemented).

Tests are likely to be broken.