Added structures for RestrictionTarget and RestrictionSource.
Replaced std::pair with classes.
Looks like fixed wrong restriction type in CheckForEmanatingIsOnlyTurn (now RestrictionTarget instead if RestrictionSource).
Fixes to fulfill remarks.
Non-explicit constructor and hash-functions.
reformat code using clang-format