lexerの実装を見直す

* `tokenize()`が処理を失敗したかどうかを取得したい
  - ref #52 
  - `tuple<bool, TokenVector>`を返す
  - `optional<TokenVector>`を返す
* マッチ処理を文字列のコピーを作って行っているのを見直したい。
  - `iterator`で走査する(トラックバックしたりする)
  - `string_view`的なのを導入する。