redesigned algorithm

Assignments of literals are no longer saved in a 'PartialAssignment'
hash-map.
Instead the assignment gets saved in the 'Literal' object.

Now all 'Clause' have references to the same 'GenericLiteral'
objects in which the current assignment is saved.
(So every 'GenericLiteral' object only exists one time)

Because every 'Clause' needs to have their 'Literals' in either negated or
not-negated form, we wrap the 'GenericLiteral' object (which stores the
assignment) in a 'Literal' object (which just determines whether the
'Literal' occurs negated or not)