WL#5081: Centralized API for metadata operations

Affects: Server-Prototype Only   —   Status: In-Design

Today, when we evaluate properties of the expression, rules to
calculate metadata are scattered across the Item class hierarchy.
The goal is to move all functionality responsible for evaluation of
result metadata to a central location, separated from the Item
hierarchy.

For each Item node there will be an associated metadata object that
contain the type information (e.g., sql type, length, # of decimals,
character set) for the result of the operation represented by this
node.  The metadata class will provide an API for accessing the type
information and for determining result metadata based on the metadata
of the operands of the operation.

Similarly, metadata objects with type information will be associated
with Field objects and values.