Remove time.Deadline 0 value semantics.

[See below about a bugfix attached to this CL]

As a recap, time.Deadline is a native type representing deadlines
using an absolute time, while time.WireDeadline is a wire type
representing deadlines using a relative duration from now.

In both old and new code, the native time.Deadline indicates "no
deadline" using time.Time.IsZero().

The old code set WireDeadline.NoDeadline to indicate the "no
deadline" case.  This is bad, since it means the zero-value
semantics are different between the native and wire types, which
is annoying for VDL/VOM.

The new code removes the WireDeadline.NoDeadline field, and
instead uses WireDeadline.FromNow=0 as a sentry to indicate "no
deadline".  This leaves open a tiny (but non-zero) possibility
that new binaries will interpret old binaries incorrectly.  But
that seems fine for now; even if it happens, it shouldn't have a
big impact.

[BUGFIX]
Annoyingly this exposed a bug in the old generated decoders.  We
need to return the special-case vdl.ErrFieldNoExist when
encountering non-existent fields, in order for backwards
compatibility to work for unknown struct fields.  But we
weren't.  This CL also fixes that bug.

MultiPart: 4/4
Change-Id: I4f7023809a6a55f0ca55efae78892bd9d65ac2c4
diff --git a/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go b/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
index c7e5a64..fa4a15f 100644
--- a/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
+++ b/go/src/v.io/x/sensorlog/internal/sbmodel/sbmodel.vdl.go
@@ -118,7 +118,7 @@
 		target, err := &t.sgPublishSbTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VDeviceCfg", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *VDeviceCfgTarget) FinishField(_, _ vdl.Target) error {
@@ -133,7 +133,7 @@
 		t.Value.SgPublishSb = ""
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VDeviceCfg", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *VDeviceCfgTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -293,7 +293,7 @@
 		target, err := &t.devIdTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDeviceCfg", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *KDeviceCfgTarget) FinishField(_, _ vdl.Target) error {
@@ -305,7 +305,7 @@
 		t.Value.DevId = ""
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDeviceCfg", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *KDeviceCfgTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -506,7 +506,7 @@
 		target, err := &t.intervalTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.SamplerDef", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *SamplerDefTarget) FinishField(_, _ vdl.Target) error {
@@ -524,7 +524,7 @@
 		t.Value.Interval = time.Duration(0)
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.SamplerDef", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *SamplerDefTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -764,7 +764,7 @@
 		target, err := &t.enabledTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VStreamDef", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *VStreamDefTarget) FinishField(_, _ vdl.Target) error {
@@ -782,7 +782,7 @@
 		t.Value.Enabled = false
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.VStreamDef", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *VStreamDefTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -988,7 +988,7 @@
 		target, err := &t.streamIdTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KStreamDef", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *KStreamDefTarget) FinishField(_, _ vdl.Target) error {
@@ -1003,7 +1003,7 @@
 		t.Value.StreamId = ""
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KStreamDef", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *KStreamDefTarget) FinishFields(_ vdl.FieldsTarget) error {
@@ -1221,7 +1221,7 @@
 		target, err := &t.timestampTarget, error(nil)
 		return nil, target, err
 	default:
-		return nil, nil, fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDataPoint", name)
+		return nil, nil, vdl.ErrFieldNoExist
 	}
 }
 func (t *KDataPointTarget) FinishField(_, _ vdl.Target) error {
@@ -1239,7 +1239,7 @@
 		t.Value.Timestamp = time.Time{}
 		return nil
 	default:
-		return fmt.Errorf("field %s not in struct v.io/x/sensorlog/internal/sbmodel.KDataPoint", name)
+		return vdl.ErrFieldNoExist
 	}
 }
 func (t *KDataPointTarget) FinishFields(_ vdl.FieldsTarget) error {