(PUP-800) improve location handling

This improves location handling in the chain from lexer to computed file, line, pos on line information.

In general, the location processing is simplified by always producing a Model::Program that holds the locator
information (this also makes the information serializable and de-serializeable; a feature to exploit later). The
advanced decorating of nodes with adapters is no longer needed until the information is needed.