asColumns
This is a hack to handle weird schemas like {type: object, string}. If a stream's top-level schema looks like this, we still want to be able to extract the object properties (i.e. treat it as though the string option didn't exist).
Throws
if we cannot extract columns from this schema