How to put these together and do I need a PWM expander?
Here's a stepper motor drive circuit using the L297 and L298. It requires 5 I/O lines,  3 for stepping and 2 for limit switches. To control 3 motors you will need 15 I/O pins. 

RepRap Stepper Motor Driver 1.2
   

The MCP23S17 has 16 I/O lines so it should be be ideal for the job, provided that you don't want to dedicate the ATmega's SPI pins for something else. Otherwise you could use the I2C version (MCP23017) which is a bit slower but uses fewer pins.