Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/lfun/AddReadDetail b/doc/lfun/AddReadDetail
new file mode 100644
index 0000000..c8de775
--- /dev/null
+++ b/doc/lfun/AddReadDetail
@@ -0,0 +1,80 @@
+AddReadDetail()
+
+FUNKTION:
+    void AddReadDetail(string|string*keys,
+                       string|string*|mapping|closure desc);
+
+DEFINIERT IN:
+    /std/thing/description.c
+
+ARGUMENTE:
+    keys
+      String oder Array von Strings mit den Namen der Details.
+    desc
+      String, Mapping, String-Array oder Closure mit/zur Beschreibung.
+
+BESCHREIBUNG:
+    Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
+    beim Lesen ausgegeben werden, haengt im wesentlichen vom Typ der
+    Beschreibung <desc> ab:
+      <desc> ist ein String.
+       Beim Lesen wird dieser String zurueckgegeben.
+      <desc> ist ein String-Array.
+       Beim Lesen wird zufaellig einer der Strings zurueckgegeben.
+      <desc> ist ein Mapping.
+        Das Mapping muss folgenden Aufbau haben:
+          ([0:        "Defaulttext",
+            "rasse1": "r1text", ...]).
+
+        Falls fuer die Rasse des das Detail untersuchenden Spielers ein
+        Eintrag im Mapping existiert, wird der entsprechende Text
+        zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
+        rassenabhaengige Texte moeglich.
+      <desc> ist eine Closure.
+        In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
+        zurueckgegeben. Die Closure bekommt dabei den Namen des Details
+        als Parameter uebergeben.
+
+    Fuer lesbare Details koennen Forscherpunkte eingetragen werden.
+
+    Will man ein lesbares Detail an einem Objekt haben, welches der Spieler
+    mit "lies <id>" (<id> ist eine ID des Objekts) bekommt, muss man ein
+    Detail SENSE_DEFAULT hinzufuegen.
+    (Ein Detail "<id>" hinzuzufuegen, hat einen ganz anderes Effekt! Dieses
+     wuerde vom Spieler mit "lies <id> an <id>" gelesen werden und ist
+     meistens nicht das, was gewuenscht wird.)
+
+BEMERKUNGEN:
+    (1) Auf die 'desc' wird kein process_string() mehr angewendet.
+        Bitte stattdessen lfun closures bzw. 'inline closures'
+        verwenden.
+
+    (2) Im Gegensatz zum Verhalten von AddTouchDetail(), AddSmells() und
+        AddSounds() wirkt ein SENSE_DEFAULT-Detail in einem Raum nicht.
+        Ein einfaches "lies" bleibt dann ohne Rueckgabewert.
+
+BEISPIELE:
+    AddReadDetail( ({ "schild" }),
+      "BETRETEN STRENGSTENS VERBOTEN!\n" );
+
+    AddReadDetail("inschrift",
+                  ([0: "Dort steht: Ein Ring sie zu binden. ....\n",
+                    "elf": "Alles in dir straeubt sich, DAS DA zu lesen.\n"]));
+
+    AddReadDetail("regeln",
+      function string() {
+        this_player()->More("/etc/WIZRULES", 1);
+        return "";
+      });
+
+SIEHE AUCH:
+    Setzen:    AddDetail(), AddSmells(), AddSounds(),
+               AddTouchDetail()
+    Loeschen:  RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
+               RemoveSounds(), RemoveTouchDetail()
+    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
+    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+    Sonstiges: GetDetail(), break_string()
+
+20.01.2015, Zesstra
+