VirtualTableScan currently requires at least one row:
This made sense when the schema was derived from the first row (714eb77), which required EmptyScan as a separate class to represent empty tables. However, since #272, the schema is explicitly provided via .initialSchema() and is independent of the rows. This makes the non-empty constraint outdated and EmptyScan unnecessary.
We should allow empty VirtualTableScan and deprecate EmptyScan.