Expansion tests

Similar to ui tests, but instead of checking the compiler output, this checks the code generated by macros.

See examples for descriptions of what the generated code does, and why it needs to be generated.

To run this test, run the following command:

cargo +nightly test --test expandtest

Locally, this test updates the files in the expand directory if there are changes to the generated code. If there are any changes to the files in the expand directory after running the test, please commit them.