Rewrite node bindings.

I've rewritten the node bindings as we've discussed. I've added in a
static const node that defines a safe empty node that we can use when
constructing default nodes. There is also a public webvtt_init_node
function that allows the Node bindings to access this functionality.
Finally, I've changed the webvtt_release_node function to set node to
0 once it has been deleted.

Fix node rewrite as per pull request discussion.

- Fixed webvtt_init_node to use a **node in order to have modifications be passed
back to the calling function.
- Changed the node bindings to throw std::out_of_range exception when trying to
retrieve from an index that is out of range.
- Changed webvtt_release_node to not check whether or not str->d exists becaused
webvtt_release_string will do this for us.
- Changed webvtt_ref_node to ensure that *node exists before attempting to
increase the ref count.

Update code based on discussion in pull request.

- Changed empty_node to have default ref count of 1
- Added in chceks for the getters in Node bindings in order to ensure that
it returns a safe and empty object if one does not exist in the c node.
- Wrapped some code in cue.c
- Changed the create node function to ensure that the node var passed in
is valid.

Rewrite plboldtag_unittest to use new bindings.

I've rewritten the plboldtag_unittest to use the new bindings in order to
see if this is the way we want to do this before we go through all of them
and rewrite. I've added some functions in the c library and on the String
binding class in order to help figure out whether or not a string is in an
empty state.

Rewrote payload unit tests to use new bindings.

I've changed all the syntax over of the payload unit tests to use
the new Node bindings. I've also added const qualifiers on the node
getters such as timeStamp(), text(), etc. I also added const qualifiers
on the String binding function isEmpty() and to the string.c function
webvtt_string_is_empty.

Convert ASSERT_TRUEs to ASSERT_EQs when checking lengths.

I've converted the ASSERT_TRUE( xLength == n ) to ASSERT_EQ( xLength, n )
in the payload unit tests as per Caitlin's request.

Reverse order of expected and actual in payload unit test asserts.
Merge pull request #160 from RickEyre/issue-72-rebase

Rewrite node bindings.
Renamed `WEBVTT_SKIP_CUESETTING` to `WEBVTT_NEXT_CUESETTING`

`NEXT` seemed more appropriate than `SKIP` while I was rebasing my
`split-parser` branch against `dev`. So it's just a quick rename to
keep an extra file change out of my pull request.
Merge pull request #162 from caitp/rename-enum

Renamed `WEBVTT_SKIP_CUESETTING` to `WEBVTT_NEXT_CUESETTING`
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.
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