Prototype dev - SizeHint integrated

1.  SizeHint works like a charm - its combinations give different costs than the previous dimensions*max_sparsity approach, but the optimized ones appear to be <= random ones, so it should be fine
2.  evaluation function was rewritten: the previous approach was kind of "cheating" / simple approximation... it worked in most cases, but ScalaCheck discovered some combinations where random plans were evaluation lower than the optimized ones (which intuitively looks better - i.e. minimizes the intermediate matrices - see one of the newly added "strange" tests cases) - it was because of the way how SizeHints are combined. So, now it's rewritten as it should be and mimics the way solutions are constructed, so that the evaluation really returns the same costs as used during the optimization.
3.  the rewritten evaluation function may seem to be a bit braindead code, so apologies for that