Created by: jpoeppel
This PR intends to bring DecisionNetworks back into Primo, by implementing expected utility computation and decision optimization using the new datastructures. In order to do so, this PR reintroduces Utility- and Decision-Nodes as two additional Node types.
While the new Factor class can be used surprisingly well in the decision making context, this additional highlighted a lot of potential refactoring places. In order to not mess up existing functionality, I have currently duplicated some functionality instead of refactoring it into common base classes. I think doing so should be part of another (refactoring) PR.
The implemented methods have been tested using 2 examples from Barber's "Bayesian Reasoning and Machine Learning" where they are working as expected, however, it should also be tested in more complex settings.