The expression tree materializer currently works by looking up a SchemaPath
in a RecordBatch to get the corresponding ValueVector.

I'd like to allow for similar functionality, but substituting the
RecordBatch with a RecordBatchLoader.  Note that both classes already
implement the required getValueVectorId(SchemaPath) method.

It seems there are several ways to make this work (generics, additional
interface, additional materializer, etc.), but the most appropriate
solution is not obvious to me.  What's the best way to go about this?