language changes: restructurion to cope with mozilla/rust#12158.

- the parser is now based on the iterator interface (finally),
  which returns a combined parsed item.
- the parsed item includes Encoding, that eliminates the need of
  the BmsUsesEncoding special message.
- the player has some more methods refactored out of the tick method.