Completely refactor the way parsing is done

Everything now has test coverage. 
I also added the ability to parse forward and backward tags and I had to remove the dependency on MindTouch so I could implement IsRest and IsChordTone.