Reduce calls to TextReader.Read
Small optimizations

Do not call into the scanner if the current char can quickly be verified
to not be a match.
Optimized scan_delims
Removed bchar method.
No longer using `char?`
Code cleanup, create Block.ListData and FencedCodeData only for the blocks where it is needed.
Code cleanup