What are the main differences between I2C, SPI, and UART? Compare them in terms of speed, bus topology, and complexity.