Encoder/decoder for serial connection without separate clock?
Best solution in terms of achievable throughput would probably be a CPLD or small FPGA.  If that's not reasonable, then I would recommend using frequency modulation.  Use a timer/counter to transmit and another one to receive.  Perhaps have 3 different frequencies, one for idle, one for high, and one for low.  Transmit complete cycles of various widths on one end using the timer/counter module, then use the capture mode of the timer/counter to measure the frequency on the other end.  I would think you can get a data rate of a few kbps without too much trouble with this setup.