AddCmd(): keine exportierbare Closure auf protected lfuns

AddCmd() erzeugt eine Closure fuer String-Methoden, wenn moeglich.
Bislang dann, wenn AddCmd entweder intern gerufen wurde oder
function_exists() die lfun findet. Dabei wurden aber auch protected
lfuns gefunden, weswegen man mit AddCmd beliebige dieser protected
lfuns rufen konnte.
Daher werden:
* die erzeugten Closures nur nocht intern gecached
* bei externem Auruf von AddCmd protected/static Methoden abgelehnt.

QueryProp/SetProp-Methoden sind entsprechend ueberarbeitet.

Change-Id: Icc34f9e648a392177cf487943b7df493194fc0d6
diff --git a/doc/props/P_COMMANDS b/doc/props/P_COMMANDS
index 527d1a1..d0ff99b 100644
--- a/doc/props/P_COMMANDS
+++ b/doc/props/P_COMMANDS
@@ -18,30 +18,41 @@
                  ({flag1,...});
                  ({regel1,...});
                  ({id1, ...}),
+                 ({closure auf fun1, ...}),
         ... ])
 
      Die Eintraege entsprechen den Parametern des AddCmd()-Aufrufs, sind
      aber in anderer Form. Als Beispiel:
 
      AddCmd(verb,fun1,1);
-     AddCmd(verb+syn1a|syn1b&syn2a|syn2b|syn2c,fun2,
-	   error1_notify|error2_notify^error2_write);
+     AddCmd(verb+syn1a|syn1b&syn2a|syn2b|syn2c, fun2,
+            error1_notify|error2_notify^error2_write);
      -->
-     ([verb:({fun1,fun2});					  // funs
-	    ({1,({error1_notify, error2_write^error2_say, 1})});  // flags
-            ({0,({({syn1a,syn1b}),({syn2a,syn2b,syn2c})})});	  // rules
-            0])							  // IDs
+     ([verb:
+        ({fun1,fun2});                                        // funs
+        ({1,({error1_notify, error2_write^error2_say, 1})});  // flags
+        ({0,({({syn1a,syn1b}),({syn2a,syn2b,syn2c})})});      // rules
+        0;                                                    // IDs
+        ({closure auf fun1, closure auf fun2}) ])             // Cache
 
-     Aufgeschluesselt sehen die einzelnen Arrays folgendermassen aus:
-
+     Funs:  ({<fun1> ,...
+              'fun' kann sein: Closure
+                               String: Methodenname - wird etwas geprueft
+                               Objekt: wenn keine Methode, this_object() fuer
+                                       intern, previous_object() fuer extern
+                               0 (erloschenes externes Objekt)
      Rules: ({<Regelsatz fuer fun1>, ({<1. Synonymgruppe>,
-				       <2. Synonymgruppe, ...}), ...})
+                                       <2. Synonymgruppe, ...}), ...})
      Flags: ({<Flag fuer fun1>, ({<Fehlermeldung 1. Synonymgruppe>, ... ,
-				  [, Index fuer write anstatt notify_fail]}),
-	      ... })
+                                  [, Index fuer write anstatt notify_fail]}),
+             ... })
      IDs:   0 oder ({<ID fuer fun1>}) oder ({0, <ID fuer fun2>}) ...
+     Cache: ({<closure fuer fun1>, ...
+
+BEMERKUNGEN:
+     Cache-Closures sind bei Export immer genullt
 
 SIEHE AUCH:
      /std/thing/commands.c, AddCmd(), RemoveCmd()
 
-08.Dez.2003 Gloinson
+16. Dez 2016 Gloinson
\ No newline at end of file