stream.hls: refactor M3U8Parser
stream.hls: refactor M3U8Parser

- Move tag specific logic and segment/playlist creation logic into
  individual methods so that the parser can be extended more easily.
- Allow load method to set additional keyword arguments on the parser.

gravyboat/streamlink,bastimeyer/streamlink,chhe/streamlink,gravyboat/streamlink,melmorabity/streamlink,melmorabity/streamlink,bastimeyer/streamlink,streamlink/streamlink,wlerin/streamlink,chhe/streamlink,streamlink/streamlink,wlerin/streamlink,beardypig/streamlink,beardypig/streamlink