ScoreSpells() is called "live", so it shouldn't be logging.

Properly create a debug option for the Score module and use live debug
printing instead of logging.
Clean up logging code.

Add logging methods to the state machine and "do nothing" logging methods
to the modules themselves so that mirrored methods can do self:Log()
without awkward checks for the method.
Overhaul printing in Ovale.

Add a method "Print" to each module that outputs to DEFAULT_CHAT_FRAME.

Add a method "Debug" to each module that registers itself for debugging
that automatically checks whether the debugging option for that module has
been toggled before outputting to DEFAULT_CHAT_FRAME.

All output is preceded by the module name so that it's easier to trace
which module is sending output.
Remove Logf() method that can be replaced with Log() in all cases.
Rename OvaleFuture:UpdateSnapshotFromSpellcast() to UpdateFromSpellcast().

The method doesn't just update the snapshot but also whatever other
information is registered with OvaleFuture to update from a spellcast
table.
Rogue: Only pre-cast Premeditation if not capped on combo points.
Rogue: Slice and Dice is unusable with Improved Slice and Dice.

For assassination rogues, the Improved Slice and Dice perk removes Slice
and Dice as an active ability and removes the Slice and Dice buff
altogether.
Rogue: Deadly Poison is replaced with Instant Poison at level 92+.

Combat rogues gain a perk "Swift Poison" that replaces Deadly Poison with
Instant Poison.
Warlock: Update script to SimulationCraft git master from 2014-11-14.

Also move Rain of Fire suggestion from the main icon to the short CD icon
for single target DPS in the destruction script.