undertaker: add temporary header file with cpp14 template methods

With the lastest c++11 standard, several features were simply
forgotten. i.e. make_unique<T>(param...) but make_shared<T>(param...)
was introduced. The same happend with begin(T &t), end(T &t) and
cbegin(T &t), cend(T &t).

Thus, we temporarily add make_unique<T>(), cbegin(T &t), cend(T &t) to
a header, which can be removed when we port to c++14.

Additional Explanation:
begin(T &t), end(T &t) return the beginning / end of a data structure
which don't necessarily have to be iterable (like old c-arrays.
begin/end are overloaded for old c-arrays, that's why the c++11
for-each loop works on c-arrays).

In contrast to begin/end the cbegin/cend methods return a constant
pointer (iterator if iterable) to the beginning/end.

Change-Id: I550a3d81f55a60abe2443882e3fb9507410d42ef
undertaker: don't use deprecated boost/filesystem functions

Functions like boost::filesystem::basename(boost::fileystem::path &)
will go away soon, so don't use them anymore.
Additionally, it is ensured to get errors when undertaker is compiled
with 'DEBUG' defined when new boost::filesystem functions become
deprecated or deprecated functions are used accidentally.

Change-Id: I7f6856da74109730d29f456d4c7cc44e97359cb2
undertaker: add missing include guards to c++14 header

Change-Id: I08834c89aee04512abbc5e3778732509a1153e35
undertaker: cleanup memory leaks within our classes

With the new c++11 features, we can easily avoid most memory leaks.

Change-Id: I82b5c4e13f8185651591f07c030de21719278736
undertaker: improve output format of minimized (.mus) defect reports

Change-Id: I9e75772a6959506f65eb77470ad916fccf75645d
undertaker: remove unused ZizConditionalBlock classes

The ZizConditionalblock.{h,cpp} files are currently unused and since
we most probably won't revert to Zizler, we can safely remove them.

Change-Id: Idd553f30b6e8395d4cf3b164e79bdd8dd2c6f43a
undertaker-kconfigdump: append CONFIG_{y,n,m} to generated models

The mentioned symbols were previously used but not defined within the
model.

Change-Id: I65158cd38517b21052e25b9791bfe91181f161d7
undertaker: cleanup headerfiles and includes

It's not necessary to #include header files for every membertype,
parameter type or return type within a classdefinition in a header
file. Most of the time a forward declaration is sufficient, if there
are no operations on the members within the header.

The tight coupling between our classes made it sometimes difficult to
avoid circlic includes.

This change reduces namespace pollution through unnecessary header
files, reduces the tight coupling between our classes and might speed
up compilation a bit.

The rule of thumb, "include every library header AFTER your own
headers" is now done everywhere.

Change-Id: I17722faa067b0c2aca27f7ce3662d1b58158c348
undertaker: speedup cnf model parsing once again

This should be the fastest possible solution while only using C++
and not C code.
Since our models are quite big, it's crucial for usability to parse
the models really fast.

Change-Id: Ie5d0f0f5a3281c1bee3677ace8ab8aeb5d8c8e84
undertaker: don't segfault when main_model isn't present

Our default Main-Model is 'x86'. The undertaker previously segfaulted
when no 'x86'-Model was present with more than one model loaded.

Consistent behaviour is now ensured.

Change-Id: I539b2066bf12371357086a67bf8aaa1931d1e8fd
undertaker: detach some static functions of their class

Some static functions were unnecessarily in the class context of
ConditionalBlock. They are now detached in a seperate Tools file
where they fit better and can be used independently of
ConditionalBlock.
This reduces unnecessary interdependencies of our classes and reduces
the complexity of the ConditionalBlock class.

Change-Id: I05a4c041e60004cd73659e38a3e834387d2a9467
make: cleanup Makefiles

Several dependencies were not necessary and others were redundant,
this is now cleaned up.

g++ is used to link, which automaticly adds -lstdc++ and according to
stackoverflow
( http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c/1033940#1033940 )
stdc++ has dependencies to the math library, thus -lm is added too.

Change-Id: Ifd0220ad37a941fc392099c179b64efbf0dc6cc8
Update .gitreview file to new i4gerrit URL

Change-Id: I8f2b1860aeb39505c4bfdcdfdac50b13142a7f08
undertaker: c++11 refactoring part2

- change enums to enum classes for type safety
- final / override (/ noexcept) keywords
- initializer list

- Some classes are heavily restructured and Methods which belong
together should now be together in the source files.
Every src file which has more than one class, has now comments to show
where class context starts.

- Some methods didn't have the 'virtual' keyword, although they were
implicit 'virtual' because of their inheritance. To be able to see
at first glance which methods are 'virtual', the keywords were added.

- Other methods didn't need to be 'virtual' and aren't virtual anymore.

- The 'override' keyword ensures, that the declared method now really
overrides. If that's not the case, the compiler will throw errors.
Errors which were found using 'override' where fixed.

- The 'final' keyword forbids derived classes to override methods.
This enables the compiler to do more optimizations and generally
increases performance (reduces lookups in the virtual function table).

- Exception specifications are deprecated and removed from our code.

Change-Id: Ie68564d570ec521b46d6e5d4262210edad07b419
model.py: is_defined method for RSFModel

The method indicates if the feature is defined in the RSFModel. It
is somehow a basic check if a string is in the model's keys, but I
consider it to be more readable in the code.

Additionally I fixed a small issue in the parse-method and followed
some pylint warnings.
add .clang-format config file for autoformatting using clang-format

options are described here:
http://clang.llvm.org/docs/ClangFormatStyleOptions.html

editor integration is described here:
http://clang.llvm.org/docs/ClangFormat.html

Change-Id: I4813324785ee7068b7ab8c9fa757fdb6eafe6a58
undertaker: c++11 refactoring part3

mostly generated by clang-modernize.

X *name = new X();
is replaced by
auto name = new X();

because auto is most of the time shorter as the class names and the
type is specified a few letters to the right, so, there is no need to
repeat it.

Change-Id: Iadab76411f821de315001435edb5665dd6d253ce
undertaker: add timer header to measure execution times

The timer.h isn't used anywhere. It can be used to measure execution
times between two points within our code.
The header defines three macros, which initialize, start and stop a
timer (using the <chrono> header).

INIT_TIMER(variablename), START_TIMER(variablename),
STOP_TIMER(variablename)

Where STOP_TIMER will print out the execution time in ms.

Change-Id: I55377823f8be2cade0ba82c31c5403097799cea9
python: merge logging messages with sys.exit()

sys.exit("msg")

does basicly the same as

logging.error("msg")
sys.exit(1)

Using the first possibility shortens our code a bit.
Suggested by Reinhard Tartler

Change-Id: Iaecf65cdf93a6f461c851fac71a4bf17d2df4281
undertaker: re-add const-ness of some iterators

The const-ness of some iterators accidentally has been dropped while
porting to c++11. This has now been fixed.

Change-Id: I6e07f30845627b0568dd37982056029d3c38b7ce