Merge pull request #147 from SLaks/more-nesting

Nest CSS & JS files
Add lots of half-written code
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

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.