Fixes #152 - Ensure chars read before special processing in lexer if( finish )

Also removed check that characters were read from the default case of the
switch statement (lexer.c:492) in order to remove redundant checks.

This fix can help prevent incorrect tokens from being returned when lexing the
end of the final buffer.
Move parse_timestamp to be visible in internal API.

I've moved the parse_timestamp function to be visible in the internal API.
This is so the cue text parser can also be able to call it when it parses
a time stamp in the cue text. I've removed the webvtt_parser self argument
as it's currently not being used by the function and this argument doesn't
really make sense from the perspective of the cue text parser.
Merge pull request #156 from RickEyre/move-parse-timestamp

Move parse_timestamp to be visible in internal API.
Merge pull request #152 from caitp/issue-152

Only enter `finish` branch in `webvtt_lex` if characters have been read.
Fix cuetext parser to parse timestamp when one is found.
Fixes #153 - Adds some more clearly named webvtt_status values

Two new webvtt_status values added, to be used with internal parser functions.
They are more clearly named than the ones used in my original pull request, I
think.
Merge pull request #159 from RickEyre/issue-146

Fix cuetext parser to parse timestamp when one is found.
Merge pull request #157 from caitp/issue-157

Parser.c: Make `const webvtt_byte separator[]` static const at file scope.
Merge pull request #153 from caitp/issue-153

Additional webvtt_status values for use by internal parser functions
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