AC-FOVE: code refactoring for Shatter

* AbstractMacroOperation: added new attribute, changed visibility
* AggParfactor: no significant changes
* AggSplitResult: added new factory
* Shatter: implementation of the algorithm
* Constraint: changed apply(Substitution) signature
* Distribution: apply(Substution)
* Factor: toString() now does not print name when it is empty
* InequalityConstraint: changes to provide new interface
* Marginal: new methods
* StdDistribution: new factory, apply(Substitution), corrections
* StdSplitResult: new factory
* UnconstrainedMarginal: new factories
* Substitution: corrections in factories and
isConsistentWith(Set<Constraint>) method
* Lists, Sets: new factory methods, correction in apply(Substitution)
* NameGenerator: same function LogicalVariableNameGenerator, but
refactored

Some parts of the code are messy (more than normal), should have
things tidy on next commit
AC-FOVE - code refactoring for shatter

* Removed AggSplitResult, StdSplitResult: now they are both
SplitResult
* Removed UnconstraintedMarginal: now it is StdMarginal
* MacroOperations involves Marginals now
* AggParfactor, StdParfactor: corrected Split to adapt to new
structure
* Shatter: the shatter macro operation, works for aggregation
parfactors and standard parfactors
* StdParfactor: correction in Counter (now uses aggregation instead of
inheritance), Builder and minor improvements in code.
* Marginal: changed interface methods. THEY WILL BE CHANGED AGAIN
* NameGenerator: improvements
* Sets: union and sort methods
* AggParfactorTest, StdParfactorTest: changes to adapt to new
SplitResult
* MacroOperationTest: shatter tests
AC-FOVE: Shattering and unification

* RandomVariableSet: reimplementation
* Marginal, AbstractMacroOperation: removed parametrization, new
methods
* AggParfactor: fixed imports, fixed Split to adapt to new data
structures
* MacroOperation: remodeled interface
* Shatter: fixed use of Marginal
* CFOVE, MacroOperations, Product, CFOVETest, Pool: kept for
reference, erase later
* Distribution: now is Iterable
* SplitResult: adapted to new classes, removed unnecessary methods,
fixed imports and constructors
* StdMarginal: remodeled class
* Prv, StdPrv, CountingFormula: new methods, classes are final now
* Histogram: now a final class
* Sets: improved implementation
* AggParfactorTest: adapted to new classes
* MacroOperationTest: adapted to new classes

The major change is the new way to deal with marginals. Instead of 
keeping track of every eliminable, it is now storing the query to be
made, which in turn is unlikely to change throughout the execution of
the AC-FOVE algorithm.