Topology manager: get rid of sychronized sections

Instead of executing changes one by one, we aggregate them such that
ordering is preserved and we have one outstanding transaction at any
given moment. This is done by placing a queue between the notification
and data store, dispatched by a background thread. This should improve
scalability by reducing number of transactions and improving
notification thread concurrency.

Change-Id: Ica70971e4540a060491ac4c0b89a134984947fca
Signed-off-by: Robert Varga <rovarga@cisco.com>