Port of the PetraMultiStart program from Petra 2.x to OpenPetra. This commit is about the PetraMultiStart program itself, and some server-side changes that allow it to operate (the program has the ability to create test users on and therefore needs to be able to 'ask' the PetraServer to do that on its behalf!).

The following commit will be about the changes neede on the Client side to make the automatisation that this program drives possible!
Changes needed on the Client side to make the automatisation that PetraMultiStart drives possible.
Fixes resulting out of running several iterations of PetraMultiStart with various test cases:
* Cache.cs: if many PetraClient instances are started at the same time and are asked to perform the same action (e.g. opening a Partner Edit screen), the file that a cacheable DataTable can get serialized to may be locked by another PetraClient instance that happens to do the same action. Therefore I put retry logic into the Method 'GetCacheableDataTableFileForWriting'.

* Partner.cs: Encountered a major problem when many PetraClient instances are started at the same time and are asked to open a Partner Edit screen: PostgreSQL can throw an Exception because Serializable Transactions occur concurrently. This may happen, but it is at PostgreSQL's discretion. Have put in retry logic that handles that situation successfully! I also changed the way how clients get notified of changes to the server-side UserDefaults - no unnesseary DB writes anymore as 4GL isnt' around anymore!
Fix warnings about missing XML Comments.
Partner Find screen: Add ability to have it perform searches when asked for by the PetraMultiStart program.
Fix warnings about missing XML Comments. Fix file header comments.
uncrustify
Simple fix for compiler error.
merge from trunk
merge from Branch 'lp:~christian-k/openpetraorg/dev_0002436_PetraMultiStart'