Source-compatibility.

This changeset makes the project compile with the latest llvm and clang.
At this point, nothing is checked, that is, the changes might have
introduced bugs.

[add] Submodules for latest llvm and clang sources
[ref] Refactored code to be compatible with latest llvm and clang.
[add] .gitignore
[add] gitmodules now ignores dirty submodules (build directories are created)