syncbase API: client watch (VDL only)

Watch allows a client to watch for updates in the database.

This change contains only the VDL API and implementation stubs.

The Watcher is not embedded directly from the "v.io/v23/services/watch"
package because:
- the store has a more convenient way to get the initial state: grab a
  snapshot, do gets and scans and get the ResumeMarker (as a part of the
  same snapshot) as a point to start
- we want to have a bit different information in a change, for example,
  whether the change came from Sync.
- it is more convenient to use tuples instead of strings for table+row names.

Change-Id: Ib657dc7da2bbf857274d994ffd2d0853b07c587c
diff --git a/services/syncbase/server/nosql/database.go b/services/syncbase/server/nosql/database.go
index cb97fb9..2da519e 100644
--- a/services/syncbase/server/nosql/database.go
+++ b/services/syncbase/server/nosql/database.go
@@ -286,6 +286,25 @@
 	return data.Perms, util.FormatVersion(data.Version), nil
 }
 
+func (d *databaseReq) Watch(ctx *context.T, call wire.DatabaseWatcherWatchServerCall, req wire.WatchRequest) error {
+	// TODO(rogulenko): Implement.
+	if !d.exists {
+		return verror.New(verror.ErrNoExist, ctx, d.name)
+	}
+	if d.batchId != nil {
+		return wire.NewErrBoundToBatch(ctx)
+	}
+	return verror.NewErrNotImplemented(ctx)
+}
+
+func (d *databaseReq) GetResumeMarker(ctx *context.T, call rpc.ServerCall) (wire.ResumeMarker, error) {
+	// TODO(rogulenko): Implement.
+	if !d.exists {
+		return "", verror.New(verror.ErrNoExist, ctx, d.name)
+	}
+	return "", verror.NewErrNotImplemented(ctx)
+}
+
 func (d *databaseReq) GlobChildren__(ctx *context.T, call rpc.ServerCall) (<-chan string, error) {
 	if !d.exists {
 		return nil, verror.New(verror.ErrNoExist, ctx, d.name)