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).
Don't end indented code block on empty code line

A line with four spaces ends a content block,
but not a code block.

This fixes lines within indented code blocks
that have no code.

All unit tests now pass!
Refactor CheckText lambda