Feature: Implement attack optimization

This patch adds a skeleton for programatically analyzing all the
damage options (that cortex knows about) which one model has against
another and displaying a consequent "maximally efficient" course of
action in terms of probable damage dealt.

This algorithm is purely greedy and does nothing interesting beyond
maximize damage, potentially leading to counterintuitive suggestions
in corner cases where the increased probability of a boosted hit roll
increases the probable damage dealt by more than boosting the damage
roll, while the standard deviation on the damage roll suggests that
one would really be better to roll an extra die on damage.

The fix for this is to cap the hit probability at about 65% or some
other "highly confident" constant, but this code is designed for user
specified ordering rules so I'm not gonna mess with it.