Allow for functions without a body

These are used in protocol blocks, before the end was never found as a `{}` block isn't used.
Improve punctuation scopes
Revamp string literal matching

Now scope the entire string as a whole and use embedded scopes for interpolation.
Correct typo in include

When calling protocol-composition-type. #ignore
Use storage scope instead of keyword

For declaration keywords.
Use constant scope for booleans