Separate parser into different functions

Adding infrastructure to split the parser into separate functions,
made re-entrant via a callback stored on the stack.

Currently implementing a quick one as a demo to deal with parsing the
header.
Splitting main parser into separate components

Have completed webvtt_parse_header, moving onto webvtt_parse_body,
webvtt_parse_id, webvtt_parse_settings, webvtt_parse_cue, and others.
Parser split into subroutines to simplify logic

Main parser function in parser.c has been split into a number of helpful
subroutines in order to be more readable and potentially allow us to test
individual parser functions without requiring us to test an entire parser
run.

In addition to this, lots of tests are now passing.
Various fixes and adjustments

-- webvtt_release_string no longer references empty_string, so that
empty_string refcount shouldn't grow ad infinitum when strings are
being released.

-- adjustments to test_parser to ensure that they abort parsing when
a fatal error is reported.

-- related to above, parser does not give up on certain fatal errors
unless the error callback asks them to. (This decision is debatable,
so lets talk about the pros and cons)

-- adjustments to various parser routines to ensure that tests will
pass (They will not pass with this submission as I have not included
changes I've made to the C++ bindings, which should be addressed in
@RickEyre's pull requests.