Implement macros code generation behind `~>` operatorn

Replace `notAvailableAtRuntime` by `compileTimeOnly` annotation
Implement `test` and `EMPTY` rules, and tests behind
Implement `nTimes` rule and add more tests