[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
[MAT-387] Remove terminal methods that took a raw pointer
[MAT-387] Remove iss functions that take pointers
[MAT-387] Comment on terminal container
[MAT-387] Add some comments, delete some dead code
[MAT-387] Make some things const refs

Make things const where possible

[MAT-387] More const

[MAT-387] More const refs, simplify runtree cleanup

[MAT-387] Make more things const refs
[MAT-387] Reinstate disabled checks
[MAT-387] Fix up after rebase