Merge pull request #141 from caitp/issue-141

Multiple state variables refer to same thing in webvtt_cue and WebVTT::Cue
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.
Remove CALLBACK_DATA and CALLBACK_SETUP macros

While still using 'goto __final' in a few areas of the code, it is
now explicit and not hidden by a macro.
Remove unused "webvtt_read_id" routine from parser.c

Removed unused routines, updated parser_internal.h to match the
currently used parser routines.
Remove XFAIL from cilanguage_unittest and filestructure_unittest

cilanguage_unittest has been removed from XFAIL list
filestructure_unittest has been removed from XFAIL list
Added filestructure_unittest to KNOWN_VALGRIND_TEST_FAILURES

We pass the test without crashing, however there are some leaks have
already been identified in github issues, particularly #87
Implementing `size` and `align` cuesettings parsers

Implementing these two to begin with, adding the others later.
Implement `size` cuesetting

Now pass all `size` cuesetting tests

still passing all align and filestructure tests

some changes to tests have been made in separate issues
Further work on cuesettings

Now passing all Cuesettings unit tests, when using the revised tests
Remove whitespace changes, I hope.
More style-change removal
Removed change to MSVC project
Re-added `webvtt_finish_parsing` declaration
`WEBVTT_MALFORMED_TAG` is now fatal error, regardless of callback return
Merged with mozilla/dev

Updated pull request to most recent commit