A Scanner iterates over a Dataset's fragments and returns data
according to given row filtering and column projection. Use a
ScannerBuilder, from a Dataset's $NewScan() method, to construct one.
ScannerBuilder has the following methods:
$Project(cols): Indicate that the scan should only return columns given
by cols, a character vector of column names
$Filter(expr): Filter rows by an Expression.
$UseThreads(threads): logical: should the scan use multithreading?
The method's default input is TRUE, but you must call the method to enable
multithreading because the scanner default is FALSE.
$schema: Active binding, returns the Schema of the Dataset
$Finish(): Returns a Scanner
Scanner currently has a single method, $ToTable(), which evaluates the
query and returns an Arrow Table.