For the two of you following this story, I have decided on a microcontroller family.
I went with the Atmel AVR series, which fit nearly all of my criteria neatly. The
development kit is only $79, and has a board that fits all of their offerings in DIP
packages that acts as a programmer (in-place and ISP) as well as a demo board
(I/O pins are connected to headers, and other headers are provided to connect
to on-board LEDs and switches). The kit comes with a nice 40-pin part with a
demo program already on it (source is provided). They also threw in an even
fancier 40-pin mega16 part. The Atmel development environment is also
included, but I ignored it, as it's wintel-only. The communication protocol is
documented, unlike Microchip's. I did need to round up a 12 volt power supply
to run it, but I had a 12VAC 1A wallwart lying around and it works fine.
The instruction set is a little more elaborate
than the PIC, and intentionally configured for C compiler support. Because of
this, gcc offers an AVR target. Gnu binutils also support AVR, and there is a
nice open source libc as well as a couple of programs to download firmware
(both support the STK500 development board I bought). The only problem I had
was the STK500 wants to communicate at 115Kbps, and my USB-serial adapter
didn't go that fast. I picked up a new Keyspan one for $40 at CompUSA and it
worked the first time!
The toolchain is clean, portable, and easy to use, and it works. I've written a
few C programs and downloaded them into various chips, and they worked a
treat. I haven't written any AVR assembly yet, but it looks pretty straightforward.