If you don't need to unplug the cable, you can use a ribbon cable between the halves and then you don't have to fiddle with IO expanders and I2C code. This is the easiest option and what I'd recommend for a prototype.
I used a 10-wire cable to connect the halves of my ergonomic board, but added some "header pin" connectors and they turned out to be a problem, since they don't "latch" in, they work loose a little too easily.
If you do try to use an IO expander to reduce the number of wires between the halves, I recommend using RJ11 / RJ12 connectors and cables, since it's very robust, hard-wearing, clips into place solidly and is easy to find. If you go this route you can use a Teensy 2.0, MCP23018 and the ErgoDox firmware as a starting point.
With the Teensy you have a lot of options regarding firmware, the TMK firmware is probably the best if you're not using an IO expander. It can be adapted easily for your own custom layout.