Unifying the channel and transport layers to use different data types

For Add, Modify and Delete operations, we have different data types of InstanceInfo, Delta and InstanceIdentifier (wrapper around the String id). Unifying these so that the transport layer can handle them.
The problem we have here is that the data we want to push out via notifications (and receive on the client side) have different types (InstanceInfo, Delta, id String for delete). We can either abstract the data into Item as done here, or alternatively interface ChangeNotification and provide specific implementations for Add, Delete and Modify that understand their respective data types.