Split parser into multiple subroutines, resolve some logic issues

This is a pretty big patch, I'm not really expecting this to land right away.

Advantages of this patch:
It potentially enables us to narrow our tests even further by testing individual sections of the parser, rather than the parser as a whole.

It makes the logic somewhat easier to follow (although admittedly this could still be improved further)

Disadvantages of this patch:
It's big, and doesn't solve every problem, and potentially introduces new ones.

This test can pass all the (filestructure) tests, but currently will not as it depends on Rick's changes to the C++ bindings in order to avoid segv/bad accesses that would let it pass all its tests.

With my own implementation of these fixes (which are largely replicated in Rick's patch), I do pretty well for the filestructure unit tests:
![all-pass](https://f.cloud.github.com/assets/2294695/141259/a1fd4916-7241-11e2-920f-01742ba63bc1.png)

There are still some issues:

Currently I'm not parsing cue settings (it won't cause any crashes, but all the cue setting test sets will fail because of this)

Tests against the payload markup will depend on fixes in other areas of the code that I have not yet touched.

Certain other tests can and should work, however I have not begun addressing the logic errors in them yet (such as the Cue ID test sets).