"veyron2": Principal in Runtime

Initialize a security.Principal in the runtime during rt.Init()
If the "VEYRON_CREDENTIALS" environment variable is set to a
directory then the principal gets intialized from the specified
directory and all subsequent mutations tp the principal's state
get saved to the directory. Otherwise, an in-memory principal
object is created.

It is okay for "VEYRON_CREDENTIALS" to point to an empty directory,
in which case a new principal object is created and then saved to
the directory.

Change-Id: I2558626a6ec8134d2b99c5a13e9a1182b3787923
diff --git a/runtimes/google/testing/mocks/runtime/panic_runtime.go b/runtimes/google/testing/mocks/runtime/panic_runtime.go
index 03a1fcb..e0b1294 100644
--- a/runtimes/google/testing/mocks/runtime/panic_runtime.go
+++ b/runtimes/google/testing/mocks/runtime/panic_runtime.go
@@ -26,6 +26,7 @@
 func (*PanicRuntime) NewIdentity(name string) (security.PrivateID, error)    { panic(badRuntime) }
 func (*PanicRuntime) PublicIDStore() security.PublicIDStore                  { panic(badRuntime) }
 func (*PanicRuntime) Identity() security.PrivateID                           { panic(badRuntime) }
+func (*PanicRuntime) Principal() security.Principal                          { panic(badRuntime) }
 func (*PanicRuntime) NewClient(opts ...ipc.ClientOpt) (ipc.Client, error)    { panic(badRuntime) }
 func (*PanicRuntime) NewServer(opts ...ipc.ServerOpt) (ipc.Server, error)    { panic(badRuntime) }
 func (*PanicRuntime) Client() ipc.Client                                     { panic(badRuntime) }