The current way in which the lexer and writer accept options is clunky. It would be better to use the pattern described here: https://golang.cafe/blog/golang-functional-options-pattern.html. We may also want to supply some options to the Reader implementation in this manner. Currently it takes no options, but would benefit from e.g options to validate CRCs.