Add alexScanB and alexScanUserB, fix ByteString wrappers w.r.t. unicode

The ByteString wrappers return truncated lexemes if there are non-ascii characters. See `tests/tokens_bytestring_unicode.x`.

This is due to `alexScan` returning length in characters.

I have added two functions `alexScanB` and `alexScanUserB` which return length in bytes, and modified
ByteString wrappers to use `alexScanB`.