Merge pull request #4 from ge0ffrey/master

Fix getProblemScale() for benchmark reports
Fixed-point arithmetic instead of BigDecimal
Moving over to incremental score calculation

For now, it is just the easy calculator. More improvements coming.
Hard constraints are now tracked incrementally
Calculate task costs incrementally

Still need to calculate idle costs.
Incrementally calculating idle costs
Incur penalty for when a machine is used at least once
Incur idle costs for when tasks are running

What remains is the toughest part: periods without tasks, and deciding
whether they are a shutdown and/or an idle.
First fully incremental score calculator
Incremental performance: don't track gaps in sets
Incremental performance: don't store gaps at all
Incremental performance: cache periods instead of retrieving them
Periods know about their neighbors

This improves performance by 100 %. It avoids one hell of a lot of
Period.get().
Remove some IDE warnings
Get rid of BigInteger, getting us 100+% average calculate count

This causes losses in precision. Where our score says -9016.8421, the
competition checker reports -9016.8573. This is a difference of 0.0002
%.

Although we certainly need to try to fix this, I am committing this
nonetheless. The performance increase is just too big to not share.
Get rid of containsKey()

Replace with the get-and-optional-put pattern, which is much more
efficient.
Prevent excessive iteration

This will come in handy for those instances where there are thousands of
machines.
Fix the precision loss in FixedPointArithmetic
TaskAssignmentDifficultyComparator: never equals
Smarter loop prevents the need for constant Period.get()