The MCP23017 is a very useful chip. This I2C device can be wired for 8 unique addresses, and offers 16 inputs, 16 outputs, or 8 of each. A one stop chip for all needs.
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.
Become the Maker you were born to be. Try Arduino Academy for FREE!
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