"veyron/tools/principal": Overwrite flag for create

At the moment, the create command on the principal tools
complains if it is provided with a directly that already
contains a principal object. This causes some inconvenience
in tests and tutorials.

This CL resolves the issues by adding a --overwrite flag to
the principal that overwrites any existing principal data in
the directory.

Change-Id: I08ed5abb89c4a2d74de42586846b49df73a6f0f4
diff --git a/security/principal_test.go b/security/principal_test.go
index d2d18ce..467d37a 100644
--- a/security/principal_test.go
+++ b/security/principal_test.go
@@ -66,20 +66,25 @@
 	if err != nil {
 		t.Fatal(err)
 	}
+	p, err = CreatePersistentPrincipal(dir, passphrase)
+	if err == nil {
+		t.Error("CreatePersistentPrincipal passed unexpectedly")
+	}
+	p, err = CreateOrOverwritePersistentPrincipal(dir, passphrase)
+	if err != nil {
+		t.Errorf("CreateOrOverwritePersistentPrincipal failed unexpectedly: %v", err)
+	}
+
 	sig, err := p.Sign(message)
 	if err != nil {
 		t.Fatal(err)
 	}
 
-	p2, err := CreatePersistentPrincipal(dir, passphrase)
-	if err == nil {
-		t.Errorf("p2 CreatePersistentPrincipal should have failed")
-	}
-	p2, err = LoadPersistentPrincipal(dir, passphrase)
+	p2, err := LoadPersistentPrincipal(dir, passphrase)
 	if err != nil {
 		t.Fatal(err)
 	}
-	if !sig.Verify(p.PublicKey(), message) {
+	if !sig.Verify(p2.PublicKey(), message) {
 		t.Errorf("%s failed: p.PublicKey=%v, p2.PublicKey=%v", message, p.PublicKey(), p2.PublicKey())
 	}
 }