Add first version of CMake framework code

This commit adds the core elements of the framework and documentation:
 - Map utility: store key-value pairs.
 - Group utility: store build configuration options.
 - STGT API: describe the targets.
 - Compiler abstraction functions for GCC.
 - Other helper functions.
 - New CMake system type called "Embedded", using correct output file
   prefixes and extensions.
 - Sphinx based documentation which includes:
    - licensing information
    - version numbering policy
    - documentation on how-to build the documentation

In addition the following utility files are added:
  - .editorconfig
  - .gitignore

Change-Id: If19a171ef066775d3544fba82f1cc70a5fb0e7d7
Signed-off-by: Balint Dobszay <balint.dobszay@arm.com>
Co-authored-by: Gyorgy Szing <gyorgy.szing@arm.com>
Co-authored-by: Bence Szépkúti <bence.szepkuti@arm.com>
diff --git a/doc/versioning_policy.rst b/doc/versioning_policy.rst
new file mode 100644
index 0000000..83f45c7
--- /dev/null
+++ b/doc/versioning_policy.rst
@@ -0,0 +1,50 @@
+Versioning policy
+==================
+
+This document captures information about how the version identifier of the
+|TFACMF| is built up, what is the meaning of each part, where the version
+information is captured and how it is managed.
+
+Summary
+-------
+
+The version identifier identifies the feature set supported by a specific
+release of the |TFACMF|, and captures compatibility information to other
+releases.
+
+This project uses "Semantic Versioning v2.0". For details please refer to
+|SMVC| v2.0.
+
+In general the version number is constructed from three numbers. The `MAJOR`
+number is changed when incompatible API changes are introduced, the `MINOR`
+version when you functionality is added in a backward compatible manner, and
+the `PATCH` version when backwards compatible bug fixes are added.
+
+Each release will get a unique release id assigned. When a release is made, the
+version number will get incremented in accordance with the compatibility rules
+mentioned above.
+
+This project is only using the core version and will not use pre-release or
+build specific metadata extension.
+
+Storage and format
+------------------
+
+The version number of each release will be stored at two locations:
+  #. In a tag of the version control system in the form of "vX.Y.Z" where X Y
+     and Z are the major, minor and patch version numbers.
+  #. In a file called version.txt. This file uses ASCII encoding and will
+     contain the version number as "X.Y.Z"  where X Y and Z are the major,
+     minor and patch version numbers.
+
+.. note:: The version id is independent from version identifiers of the
+          versioning system used to store the |TFACMF| (i.e. git).
+
+--------------
+
+.. |SMVC| replace:: `Semantic Versioning`_
+.. _`Semantic Versioning`: https://semver.org/spec/v2.0.0.html
+
+*Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.*
+
+SPDX-License-Identifier: BSD-3-Clause