Extract parsing machinery from the XML parser
Remove unneeded nested tuple
Standardize variable names
Remove prefix from `StartPoint`
No need to match directly on parser enums
Remove transformation from the macro

Point gained a `map` method to replace cases where we actually
transformed types, other locations had side-effecting methods
extracted.
`Point::to` returns the string value between two points

This allows us to combine multiple smaller consumptions and then
return a single string. This is especially useful for parsing things
like "1.0" using DIGIT+ "." DIGIT+.
Unify success / failure cases

Now success and failure can carry around extra data. In success cases,
this is usually the thing that was parsed. In failure cases, this will
be None or information about the type of error.
Remove redundant Parse prefix
Export the macros for reuse in other crates
Convert parse_* macros into normal method and function calls
Move generic parser methods alongside the parser
Result `map` functions will only be called once
Allow specifying the error when parsing fails
Extract reusable parsing components
Consume a slice of identifiers and return the matching token
Add a constructor for failed parses
Make peresil public