Revised code to reflect reality: Niko pointed out that a &mut self can
be borrowed as &self (temporarily) as long as you don't play games
with nesting or multiple calls.
refactor moving Board to_str to ToStr impl.
Refactored code, use named import to reduce text used to describe initial_board.
Added variant move iterator that filters out the ones that leave king exposed.
Added code to validate that a move does not leave the king exposed.
Noted a bug in a comment before hitting the sack.
Fixed bug in radiate: when a move captures, add it to accum before terminating loop.

Added a bunch of code to simplify the debug output while I was
tracking down that bug.

Fixed get_moves to filter out the moves that are self-captures.
Refactored get_moves so that the pawn handling is its own method.

Cleaned up re-prompt output on invalid move entry.

Revised comment to reflect that the bug it documented was fixed, but
that another bug (that occurs near the end-game) has arisen in its
place.