Track and report the error position

Also included a bunch of renaming to attempt to clarify roles.
Add Show to the intermediate parsing structs

These aren't used for anything directly, but are useful for debugging.
Specially parse the greater-than sign that opens a tag
Extract document parsing methods
Merge common empty and non-empty element parse rules
Improve error reporting to include progress into zero-or-more rules
Changes for Rust update
Update the command line app to support XML parsing errors