Fix `typeOf` to handle all L2 exps
Reorganize tests
Re-introduce the C# codegen module