Make ARGPath immutable.
Having this class mutable was a very bad design,
because we use it to communicate between components,
and we store it for an extended amount of time in sets of
counterexamples.

Unfortunately, some components rely heavily on mutating ARGPaths.
Thus, a new class MutableARGPath is added that is a copy of the old one,
and these components now use MutableARGPath.
However, converting between ARGPath and MutableARGPath costs O(n)
in the length of the path each time.
Over time most of the use cases of MutableARGPath should probably
be rewritten to use only ARGPath or simple lists of states and edges.

git-svn-id: https://svn.sosy-lab.org/software/cpachecker/trunk@13134 4712c6d2-40bb-43ae-aa4b-fec3f1bdfe4c