Sweet, I FINALLY got it to work!
Here is my basic process:
1. Reset/presence pulse
2. Skip ROM --> send the 8bit command
3. Convert-T --> send the 8bit command
4. Delay 750msec (I never did get the read time slot, and wait for the dataline to go high thing to work)
5. Reset/presence pulse <-- this is the part that I was missing the whole time
6. Read Scratch pad --> send the 8bit command
7. Read time slots ---> read the incomming data, store it where ever you want it to go.
If all you care about is the temperature, you only need to read the first 16 bits of data.
The rest of the data contains the upper and lower temperature alarms, the config register, and the CRC byte, and a few bytes that useless to the user (the DS18B20 uses them internally).
Figure 7 in the datasheet shows them all.
---------------------------------------------------------------------------------------------------------
So... it was the 2nd reset that I was missing all of this time
. I'm still kind of surprised that resetting the device RIGHT after you tell it to refresh its internal regs actually works... but I guess that's just the way they built it.