You can talk directly to the chip, or use widely available libraries to insulate your experience from the nitty gritty.
Tronixstuff has a fantastic Arduino tutorial which covers a non library implementation. Very easy to understand, you may wish to avoid a library altogether.
Adafruit has a great Raspberry Pi tutorial to get you up to speed with a great increase in I/O capability, as well as allowing 5v I/O where the Raspberry Pi would only accept 3v inputs.
These can be used to convert a parallel lcd to I2C, and give button inputs as well. Adafruit makes a lcd button shield using this functionality. Build your own at http://arduinotronics.blogspot.com/2015/11/diy-i2c-lcd.html
Drive this 16 channel relay board - http://amzn.to/1OmvGLp
I2C Relay Board - http://www.instructables.com/id/I2C-Relay-Board/step6/Designing-of-the-I2C-Relay-Board/