trace_processor: prevent window table from allowing zero duration tables

This CL fixes the situation where the window table would be un-updatable
if the window table is updated to have a zero duration. This is because
rowid = 0 would hit no rows and thus Update() would never be called.

Also add ability for sub-tables to send error messages to the shell and
the ui.

Change-Id: Id8dac048c78a161c200c5d8f527fc707d76d398d
diff --git a/src/trace_processor/table.h b/src/trace_processor/table.h
index d8cd20d..bccf710 100644
--- a/src/trace_processor/table.h
+++ b/src/trace_processor/table.h
@@ -159,6 +159,11 @@
   // At registration time, the function should also pass true for |read_write|.
   virtual int Update(int, sqlite3_value**, sqlite3_int64*);
 
+  void SetErrorMessage(char* error) {
+    sqlite3_free(zErrMsg);
+    zErrMsg = error;
+  }
+
   const Schema& schema() { return schema_; }
 
  private: