Modem event and wrapper

Useful stuff...
This isn't really what the PeripheralEvent class is for. That class is meant solely as a parent class for the peripheral attach and detach events. That way you can create an EventHandler method that takes a PeripheralEvent, and it'll catch both attach and detach events. With ModemMessageEvent subclassing PeripheralEvent, that handler would also catch these events, which it doesn't want.