The simplest way to prevent overcharge is to use a zener diode. The charged voltage for an NiMH cell is 1.4V, so you want a zener voltage of (1.4V * 4) = 5.6V to prevent overcharge. You can use multiple zeners in series to get the total voltage you need.
Generally speaking batteries should not be charged at a rate of more than 1/10th their capacity. For your 700mah cells that's 70ma, and you're charging at 90ma max. I figure that's close enough, and in practice you won't get that much current anyway.
An ATMega running at 5V should be fine pulling power, unregulated, directly from your batteries. However, you should use an analog pin to read the battery voltage and "sleep" your bot when the batteries run low. The Narcoleptic
library makes this pretty simple, but Google can help you find other examples.
Finally, like Rob mentions, there are certainly more efficient ways of doing all this (google "MPPT" for starters). I'm going from the assumption that you're trying to keep it simple/cheap and the value of the components you have at risk is low.