The DiceRoll.roll() method was counting successes from `this.result`
(the stale/empty list from before rolling) instead of the newly rolled
values. Fixed by capturing the new roll in a local variable before
passing it to copy(). Added 6 unit tests covering the fix.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>