[SQL] Refactors data type pattern matching

Refactors/adds extractors for `DataType` and `Binary*` types to ease and simplify data type related (nested) pattern matching.
Why are these type parameterized?  Things seems to compile without this added complexity.  Extra refinement can be done regardless with nested pattern matching.