Improves the grammar, functionality, and code quality of set declarations

Summary
Fixes #751 by doing a bunch of facelifting of how set statements are constructed.
In fixing this, I ended up shotgun-debugging a lot of things surrounding how set statements are constructed. This PR also include some additional documentation added to various things, as I looked at them or touched them during development of this.
Changelog
- Fixes
setdeclarations not respecting commas, indented blocks, nor bracing. - Blocks now very consistently evaluate their
setstatements first and foremost, before anything else, in a way that makes sense - Use of the
inkeyword is now properly prohibited for all set use cases except 'src' set srcnow properly gives an unimplemented warning- Slightly optimizes
DMASTProcBlockInnerby reducing empty array allocations. - Removes
DMASTProcStatementMultipleVarDeclarations, and replaces it withDMASTAggregate<>. - Makes
Consumearray overload return theTokenTypeif found
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This PR now correctly mimics the cursed behaviour BYOND has when a set statement's right-hand side is non-constant. This feature must be manually enabled through a #pragma directive.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
Fails CI, in case you didn't see the last run finish.
This appears to be on an older version of RobustToolbox.
This appears to be on an older version of RobustToolbox.
Github Desktop is a useful tool for resolving merge conflicts