Created NameParser trait for swappable parsers

Implemented TokenParser which tries to consume name one token at a time,
checking all possibilities before traversing parse tree until it has
enough data to generate the ParsedMediaFile