Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/LPC/unions b/doc/LPC/unions
new file mode 100644
index 0000000..65a841d
--- /dev/null
+++ b/doc/LPC/unions
@@ -0,0 +1,30 @@
+CONCEPT
+        unions
+
+DESCRIPTION
+        Unions types are a declaration at compile time that a variable,
+        function parameter or function return value can be one of
+        several types.
+
+        Except for type checks using #pragma rtt_checks they have no
+        impact at runtime. There is no runtime union type, the concrete
+        value type is one of the possibilities of the union type.
+
+        Union types have no type names for themselves, they are declared
+        anonymously with the declaration of the variable, function
+        parameter or return type:
+
+            int|string var;
+            int|float fun(object|closure f);
+
+        When using union types as array member types they must be
+        enclosed with < >:
+
+            <int|string>* arr;    /* An array of ints and strings. */
+            int*|string*  arr;    /* Either an array of ints or
+                                     an array of strings.          */
+
+            /* There must be a whitespace between two consecutive <
+               to be not confused with the << operator:            */
+            < <int|string>*|object >* arr;
+