discovery: Add timestamp to discovery.Update.

The syncbase discovery service needs to be able to order updates from
global discovery and neighborhood discovery based on timestamps in the
case of a changed advertisement.
This change exposes timestamps from discovery.Update.

MultiPart: 5/5
Change-Id: Ic2d22c1c1090a8521d7964e5e4f0b3b24f9000e7
diff --git a/go/src/v.io/mojo/discovery/internal/update_test.go b/go/src/v.io/mojo/discovery/internal/update_test.go
index 0f961a8..332214e 100644
--- a/go/src/v.io/mojo/discovery/internal/update_test.go
+++ b/go/src/v.io/mojo/discovery/internal/update_test.go
@@ -9,6 +9,7 @@
 	"reflect"
 	"testing"
 	"testing/quick"
+	"time"
 
 	"v.io/v23/context"
 	"v.io/v23/discovery"
@@ -26,6 +27,7 @@
 func (u *mockUpdate) Attribute(name string) string                                        { return u.ad.Attributes[name] }
 func (u *mockUpdate) Attachment(ctx *context.T, name string) <-chan discovery.DataOrError { return nil }
 func (u *mockUpdate) Advertisement() discovery.Advertisement                              { return u.ad }
+func (u *mockUpdate) Timestamp() time.Time                                                { return time.Time{} }
 
 func TestUpdate(t *testing.T) {
 	rand := rand.New(rand.NewSource(0))
diff --git a/mojom/v.io/discovery.mojom b/mojom/v.io/discovery.mojom
index 12f60bd..fe812fe 100644
--- a/mojom/v.io/discovery.mojom
+++ b/mojom/v.io/discovery.mojom
@@ -151,4 +151,6 @@
   //
   // The returned advertisement may not include all attachments.
   GetAdvertisement() => (Advertisement ad);
+
+  // TODO(jhahn,suharshs): Add GetTimestamp field to match Go API.
 };