Start MarkdownContentTypeHandler

Parse Markdown code blocks into
Artifacts and LanguageBlocks to
suppress HTML language service.

Fixes #15, but needs more work.
Add stateful parser class

Includes untested full code block parser
Use Markdown parser

Doesn't actually work
Allow both fence types
Add basic Markdown tests

Caught two bugs so far
Add failing test cases for indented code blocks
Add more failing tests
Rewrite Markdown parser

Use OOP to eliminate duplication.
Does not yet support tabs or lists.
All other tests pass.
Add tests for fenced code blocks

Doesn't handle missing empty lines yet.
Finish fenced code blocks

Allow missing newline after quote
(not quite correct; should count as wrapping newline?)

Fix remaining unit tests
Fix Markdown CTH

ClassificationType != ContentType
Fix blank lines in fenced code blocks
Fix post-blank lines in fenced code blocks
Create separate ProjectionBuffers per language

Enabled embedded language services inside code
blocks.  Fixes #112.

Doesn't work yet.
Include artifact separators

Also allow empty code blocks

This allows the editor to see new inline artifacts as they're typed.
I may revert this and override IsDestructiveChange() instead.
Report destructive changes for all code blocks

Override ArtifactCollection.IsDestructiveChange() to
return true when users type fences or indents.

I need to rewrite all of this logic because
SensitiveFragmentCollection cannot handle
multiple delimitors.

This requires that the parser report code blocks
more aggressively, coming in later commits.
Report empty code lines in fenced code blocks

The editor will now see the empty artifact from
the destructive change and expand it as the user
adds content.
Report trailing blank fenced code line at EOF

The editor will now see an empty artifact when
the user adds a single fence at the end of the
document, adds a blank line, then adds content

Also labels some test cases
Don't swallow leading empty indented code lines

When skipping leading whitespace lines before
blocks, don't skip lines with four spaces.

Other blank lines are skipped regardless of
space count.
Report empty indented code lines

The VS editor will now see an empty artifact when
the user types four spaces (a destructive change)
and expand the artifact as the user adds content.

TryConsumeContentLine() is now properly aware of
empty lines that are followed by an EOF or block
end, as opposed to lines which end of the block.
This eliminates the earlier ugly hack for fenced
code blocks with trailing blank lines at EOF; it
will now consume them as an empty line with '\0'

This also fixes lines with exactly one character
(which used to be swallowed because NextChar was
a newline).