Track event history for Lutron buttons.

We do this basically by introducing the beginnings of a parent/child
device concept, and making the Lutron buttons (which are not a fully
fledged device in the Lutron object model) a Stargate device that's
a child of the keypad.

- KeypadButton is now a subclass of StargateDevice. Among other
  effects, this means they get a sg_device_id and get tracked
  by the persistence module.
- add new StargateDevice property "hide_from_enumeration" which
  stops buttons from showing up separately in areas
- but add child devices (which right now only Lutron keypads have,
  and only keypad buttons are) back to the device set in
  StargateHouse.get_recent_events().
- pass component ID along with on_user_action from ra_repeater
  through RaGateway to the LutronDevice
- have ra_gateway's KeypadDevice catch on_user_action and proxy
  it to the correct button device