Added basic implementation of CheckLiteral.
Refactor validation of Directives list so it lives in the parser.
This seems cleaner.
Added support for CHECK-L in existing validation rules.
Add basic support for CHECK-NEXT-L: directive
Directive validation now allows a CHECK-NEXT-L: directive before
a CHECK-NEXT: directive.
Remove redundant directive validation rule and add test to check
that using a check-next-lit after a check-not is invalid.
Refactor CheckNot directive.
Added basic support for CHECK-NOT-L: directive.
Add test to check that having a CHECK-NEXT: following a CHECK-NOT-L:
is considered invalid.
Added test cases for mixing CHECK-NOT: and CHECK-NOT-L:

Although it might be desirable we can't support this right now
because internally we try to merge adjacent NOT directives together.

This doesn't work here. We would need some sort of promotion where
CHECK-NOT-L: directives get promoted to CHECK-NOT: directives...
this would be a pain to do. User's can easily work around this by
just using CHECK-NOT or CHECK-NOT-L exclusively in a region.
Added support for ${LINE}, ${LINE:+N} and ${LINE:-N} substitutions in
directives. A newly added flag --disable-substitutions can disable this
behaviour.
Added support for the following substitutions

${CHECKFILE_NAME}
${CHECKFILE_ABS_PATH}