[MAT-387] Reinstate disabled checks
[MAT-387] Replace typedefs with types in-class

Instead of typedefing shared_ptr<const OGNumeric> to pOGNumeric,
it is instead typedef'd to OGNumeric::Ptr.
[MAT-387] Make terminal constructors private

Since it is a requirement that every OGNumeric has a shared_ptr
that it can use for shared_from_this(), we don't want to allow the
construction of an OGNumeric with a "naked" new.

This commit makes all OGTerminal and subclasses constructors
private, and provides a static factory method create() for their
construction. The factory method returns a new OGTerminal wrapped
in a shared_ptr.

This still leaves OGExpr constrcutors exposed; this is addressed
in the next commit.
[MAT-387] Make Expr constructors private

This makes the remaining constructors for OGNumeric subclasses
private and provides factory methods for them.
[MAT-387] Remove methods that took raw pointers

This includes some methods from OGTerminal, and some iss methods.
[MAT-387] Add doc comments, remove dead code
[MAT-387] Use const refs where possible