Removed shared locations from Herd, for the time being. This is part
of an ongoing effort to genericise the implementation of locations
in Herd, and to re-share various bits of the /lib.
Moved GPU scope-tree and GPU memory-space-map into a separate module
(ScopeTree) with its own lexer (ScopeTreeLexer) and parser
(ScopeTreeParser).
Made process identifiers generic.

Previously, we had "type proc = int". Now, there is a separate
module for process identifiers, and all operations on process
identifiers now go via that module. The module still defines
process identifiers as integers, but the plan is for there soon
to be several implementations of that module, so that scoped
models can define a process identifier as a tuple.