In the process of implementing arguments in ProsePhrase.
Changed all std::vector<PNode*> instances to PNodeVector for simplicity.  Looks like scanning for argument names is working.  Now just need to substitute arguments.
Got the argument searcher deleting the arguments to prove it found them.  Fixed a few bugs. (prev commit broken).
Now we dynamically parse ProsePhrase values as the ProsePhrase is being constructed.  This means the value is "interpreted" at the time the phrase is created (and not deferred).  This is necessary for a million reasons.  In particular, so that if you use a word as an argument name, it can find that word in the value!  (Without dynamic parsing the word would be stuck as an uninterpreted id).
Fixed a one-off error.  Delete node was, for some reason, advancing after deleting.  This never showed up before because it always happened at the end of a function that left the code stream dirty.  ArgRef objects now appear to be substituted into the correct spots (at least at level 0).
Fixed an initialization bug in WordCreationAction.  Working on argument substitution.
Added CodeStream as a parameter to the value building process so we can use some of the data it has.
Got substitution working (at least on level 0).  Possibly leaking some memory but this will have to be studied later.
Testing some patterns to remove extra separators that accumulate at the beginning of the sentence.  Fixing a bug: terminators occurring before a phrase construction expression with an argument that is used causes a weird crash.
Working on a bunch of bugs.  Incomplete.
Added a purity class for actions so that the ActionPhrase can decide whether to invalidate the caches.  (untested)
Added source, target, and validator to ProsePhrase value parsing.  This is necessary so we can dynamically parse the value.  This eliminated the substitution bug which was caused by the argument names being words in the pattern but only ids in the value.  Dynamic parsing properly turned these into words so they were identified as the same as the arguments.
Now supporting @prose and @pattern (although @pattern doesn't pass as an argument correctly).
Added @id matcher.  Fixed a bug where PObjSubclassMatcher wasn't retaining its value to pass as an argument.
Working on implicit pattern matching.
Seem to fixed the problem with @iprose causing a null ref exception.  Memory management has some major over retention problems.  This has to be cleared up later.
Began a printReport() series of methods to aid in debugging.
Fixed a bug in AtPatternMatcher which was not allowing more than one @ in a single pattern.
Fixed a bug in AtProseMatcher which was causing it to accept pieces of {…} blocks terminated by commas in @xprose.
Started implementing MatchComparator.  Got it to choose a typeobjmatcher over a @prose.
Added @xprose to SLL.
Added a file I hope to eventually make a regression test that runs on startup.
Merge branch 'feature/ProsePhrase_arguments' into develop