Implemented safe assertion API to assist in debugging errors.

These are macros which should perform essentially no action in a
release build, however for debug purposes we can build the library
with -DFATAL_ASSERTION or -DBREAK_ON_ASSERTION in order to get some
alternative, useful behaviours.

The safe_assert macro can be used only in routines which return a
webvtt_status, so its return code can be interpretted as a parse error
and eventually return control to the application. die_if() provides a
helpful check for debugging.