Introduce Device callbacks for session and commissioning changes (#468)
* Expose fabric index too to use to filter data for fabrics
* Add Fabric removal callback
Used to inform upper layers of a change in fabrics
* Add Subscription changed callback
Used to inform upper layers of a change in subscriptions
* Add high level commissioning/session changed callbacks to device
To inform the developer about things happend with the device.
* Add needed MatterDevice code
* Adjust tests
* Add callbacks to example
* Enhance methods to filter by fabricIndex
* Adjust tests
* Remove whats already implemented elswhere
* Call callback a bit earlier
* Expose nodeId from controller
* make sure to use current fabric
(because could be added later then initialization)
* Add server callbacks to tests
* Rename variable to know meaning
* typo
* Address review feedback
* adjust tests