This commit modifies the former Scalar (now know as ScalarLike) enum to
hide the internal types inside local opaque wrappers. Rather than the
previous struct variants, ScalarLike now takes Eager(Scalar) and
Lazy(ScalarLazy) variants, both of which hide internal types involved.
This commit also removes the ScanResult return types from public view,
converting them to the library level Error type.
We place a small wrapper around all of the arguments provided to
Read::drive(), and return a wrapped error, both of which are opaque to
external libraries.