VOL-1176: Ported callback mechanism
- Updated some files with the license block

Change-Id: I61db400b3a72c4915f4f3f17cc7a110313c2d25e
diff --git a/db/model/root.go b/db/model/root.go
index 5adb99d..d10e9f1 100644
--- a/db/model/root.go
+++ b/db/model/root.go
@@ -31,8 +31,8 @@
 	KvStore               *Backend
 	Loading               bool
 	RevisionClass         interface{}
-	Callbacks             []func()
-	NotificationCallbacks []func()
+	Callbacks             []CallbackTuple
+	NotificationCallbacks []CallbackTuple
 }
 
 func NewRoot(initialData interface{}, kvStore *Backend, revisionClass interface{}) *Root {
@@ -44,8 +44,8 @@
 		revisionClass = reflect.TypeOf(PersistedRevision{})
 	}
 	root.RevisionClass = revisionClass
-	root.Callbacks = []func(){}
-	root.NotificationCallbacks = []func(){}
+	root.Callbacks = []CallbackTuple{}
+	root.NotificationCallbacks = []CallbackTuple{}
 
 	root.Node = NewNode(root, initialData, false, "")
 
@@ -88,12 +88,12 @@
 	for len(r.Callbacks) > 0 {
 		callback := r.Callbacks[0]
 		r.Callbacks = r.Callbacks[1:]
-		callback()
+		callback.Execute(nil)
 	}
 	for len(r.NotificationCallbacks) > 0 {
 		callback := r.NotificationCallbacks[0]
 		r.NotificationCallbacks = r.NotificationCallbacks[1:]
-		callback()
+		callback.Execute(nil)
 	}
 }
 
@@ -101,11 +101,11 @@
 	return len(r.Callbacks) == 0
 }
 
-func (r *Root) addCallback(callback func()) {
-	r.Callbacks = append(r.Callbacks, callback)
+func (r *Root) addCallback(callback CallbackFunction, args ...interface{}) {
+	r.Callbacks = append(r.Callbacks, CallbackTuple{callback, args})
 }
-func (r *Root) addNotificationCallback(callback func()) {
-	r.NotificationCallbacks = append(r.NotificationCallbacks, callback)
+func (r *Root) addNotificationCallback(callback CallbackFunction, args ...interface{}) {
+	r.NotificationCallbacks = append(r.NotificationCallbacks, CallbackTuple{callback, args})
 }
 
 func (r *Root) Update(path string, data interface{}, strict bool, txid string, makeBranch t_makeBranch) Revision {
@@ -200,7 +200,7 @@
 	return r
 }
 
-func (r *Root) MakeLatest(branch *Branch, revision Revision, changeAnnouncement map[CallbackType][]interface{}) {
+func (r *Root) MakeLatest(branch *Branch, revision Revision, changeAnnouncement []ChangeTuple) {
 	r.Node.MakeLatest(branch, revision, changeAnnouncement)
 
 	if r.KvStore != nil && branch.Txid == "" {