Closes #219 (closed)
Rather than processing path data character by character, building up numbers as we go, turn the path into a sequence of tokens (command, number, flag or comma) and do the path processing on them.
Flag tokens are a little weird; there's no way for the lexer to know if something should be a number or flag without input from the parsing context.
Uses std::str::parse:: and std::str::parse:: to do the number parsing once we have found a region that looks like a number.
This approach is slower than the hand rolled number parsing; added benchmark to compare.