(PUP-800) Add offset and length to Locatable base class in model

This adds offset and locatable as attributes in the pops model
and makes all objects in a Program model have this trait (except
the top level Program which is always from 0 to the entire length of
the source).

Further, the Program may now contain the line index, and may
contain the source text.
(maint) Remove stale commented code
(maint) Fix up type parser's handling of String

String parameterization not fully supported (in string form),
and previously non parameterized types were listed twice.
(PUP-800) Clean up and improve handling of location / position

There were several issues with the implementation of location
handling - primarily missing the ability to be able to
serialize/de-serialize the model with retained positioning information.

This changes the design to bring the two values offset and length
into each model object and that location information is recored in
the top level Program construct. With this change a Program is
always returned as the result of a parse.

The change touches many files, due to the change to always return
a Model::Program. Most of the change is removal of now no longer
needed constructs.
Merge pull request #2230 from hlindberg/pup-800_improve-location-handling

(PUP-800) improve location handling