Rearrange the well-known types package layout and API:

- Rename `types` to `ptypes`.
- Rename `DurationFromProto` to `Duration`.
- Unexport `ValidateDuration`.

Sorry for the breakage. This should be the final location of everything.
diff --git a/Makefile b/Makefile
index 19551a9..80b6a17 100644
--- a/Makefile
+++ b/Makefile
@@ -33,11 +33,11 @@
 all:	install
 
 install:
-	go install ./proto ./jsonpb ./types
+	go install ./proto ./jsonpb ./ptypes
 	go install ./protoc-gen-go
 
 test:
-	go test ./proto ./jsonpb ./types
+	go test ./proto ./jsonpb ./ptypes
 	make -C protoc-gen-go/testdata test
 
 clean:
diff --git a/types/any/any.pb.go b/ptypes/any/any.pb.go
similarity index 100%
rename from types/any/any.pb.go
rename to ptypes/any/any.pb.go
diff --git a/types/any/any.proto b/ptypes/any/any.proto
similarity index 100%
rename from types/any/any.proto
rename to ptypes/any/any.proto
diff --git a/types/doc.go b/ptypes/doc.go
similarity index 95%
rename from types/doc.go
rename to ptypes/doc.go
index ff2810a..c0d595d 100644
--- a/types/doc.go
+++ b/ptypes/doc.go
@@ -30,6 +30,6 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 /*
-Package types contains code for interacting with well-known types.
+Package ptypes contains code for interacting with well-known types.
 */
-package types
+package ptypes
diff --git a/types/duration.go b/ptypes/duration.go
similarity index 89%
rename from types/duration.go
rename to ptypes/duration.go
index 40f84f0..65cb0f8 100644
--- a/types/duration.go
+++ b/ptypes/duration.go
@@ -29,7 +29,7 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-package types
+package ptypes
 
 // This file implements conversions between google.protobuf.Duration
 // and time.Duration.
@@ -39,7 +39,7 @@
 	"fmt"
 	"time"
 
-	durpb "github.com/golang/protobuf/types/duration"
+	durpb "github.com/golang/protobuf/ptypes/duration"
 )
 
 const (
@@ -49,11 +49,11 @@
 	minSeconds = -maxSeconds
 )
 
-// ValidateDuration determines whether the durpb.Duration is valid according to the
+// validateDuration determines whether the durpb.Duration is valid according to the
 // definition in google/protobuf/duration.proto. A valid durpb.Duration
 // may still be too large to fit into a time.Duration (the range of durpb.Duration
 // is about 10,000 years, and the range of time.Duration is about 290).
-func ValidateDuration(d *durpb.Duration) error {
+func validateDuration(d *durpb.Duration) error {
 	if d == nil {
 		return errors.New("duration: nil Duration")
 	}
@@ -70,11 +70,11 @@
 	return nil
 }
 
-// DurationFromProto attempts to convert a durpb.Duration to a time.Duration. DurationFromProto
+// Duration converts a durpb.Duration to a time.Duration. Duration
 // returns an error if the durpb.Duration is invalid or is too large to be
 // represented in a time.Duration.
-func DurationFromProto(p *durpb.Duration) (time.Duration, error) {
-	if err := ValidateDuration(p); err != nil {
+func Duration(p *durpb.Duration) (time.Duration, error) {
+	if err := validateDuration(p); err != nil {
 		return 0, err
 	}
 	d := time.Duration(p.Seconds) * time.Second
diff --git a/types/duration/duration.pb.go b/ptypes/duration/duration.pb.go
similarity index 100%
rename from types/duration/duration.pb.go
rename to ptypes/duration/duration.pb.go
diff --git a/types/duration/duration.proto b/ptypes/duration/duration.proto
similarity index 100%
rename from types/duration/duration.proto
rename to ptypes/duration/duration.proto
diff --git a/types/duration_test.go b/ptypes/duration_test.go
similarity index 91%
rename from types/duration_test.go
rename to ptypes/duration_test.go
index 02462ae..e761289 100644
--- a/types/duration_test.go
+++ b/ptypes/duration_test.go
@@ -29,7 +29,7 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-package types
+package ptypes
 
 import (
 	"math"
@@ -37,7 +37,7 @@
 	"time"
 
 	"github.com/golang/protobuf/proto"
-	durpb "github.com/golang/protobuf/types/duration"
+	durpb "github.com/golang/protobuf/ptypes/duration"
 )
 
 const (
@@ -87,24 +87,24 @@
 
 func TestValidateDuration(t *testing.T) {
 	for _, test := range durationTests {
-		err := ValidateDuration(test.proto)
+		err := validateDuration(test.proto)
 		gotValid := (err == nil)
 		if gotValid != test.isValid {
-			t.Errorf("ValidateDuration(%v) = %t, want %t", test.proto, gotValid, test.isValid)
+			t.Errorf("validateDuration(%v) = %t, want %t", test.proto, gotValid, test.isValid)
 		}
 	}
 }
 
-func TestDurationFromProto(t *testing.T) {
+func TestDuration(t *testing.T) {
 	for _, test := range durationTests {
-		got, err := DurationFromProto(test.proto)
+		got, err := Duration(test.proto)
 		gotOK := (err == nil)
 		wantOK := test.isValid && test.inRange
 		if gotOK != wantOK {
-			t.Errorf("DurationFromProto(%v) ok = %t, want %t", test.proto, gotOK, wantOK)
+			t.Errorf("Duration(%v) ok = %t, want %t", test.proto, gotOK, wantOK)
 		}
 		if err == nil && got != test.dur {
-			t.Errorf("DurationFromProto(%v) = %v, want %v", test.proto, got, test.dur)
+			t.Errorf("Duration(%v) = %v, want %v", test.proto, got, test.dur)
 		}
 	}
 }
diff --git a/types/empty/empty.pb.go b/ptypes/empty/empty.pb.go
similarity index 100%
rename from types/empty/empty.pb.go
rename to ptypes/empty/empty.pb.go
diff --git a/types/empty/empty.proto b/ptypes/empty/empty.proto
similarity index 100%
rename from types/empty/empty.proto
rename to ptypes/empty/empty.proto
diff --git a/types/regen.sh b/ptypes/regen.sh
similarity index 100%
rename from types/regen.sh
rename to ptypes/regen.sh
diff --git a/types/struct/struct.pb.go b/ptypes/struct/struct.pb.go
similarity index 100%
rename from types/struct/struct.pb.go
rename to ptypes/struct/struct.pb.go
diff --git a/types/struct/struct.proto b/ptypes/struct/struct.proto
similarity index 100%
rename from types/struct/struct.proto
rename to ptypes/struct/struct.proto
diff --git a/types/timestamp/timestamp.pb.go b/ptypes/timestamp/timestamp.pb.go
similarity index 100%
rename from types/timestamp/timestamp.pb.go
rename to ptypes/timestamp/timestamp.pb.go
diff --git a/types/timestamp/timestamp.proto b/ptypes/timestamp/timestamp.proto
similarity index 100%
rename from types/timestamp/timestamp.proto
rename to ptypes/timestamp/timestamp.proto
diff --git a/types/wrappers/wrappers.pb.go b/ptypes/wrappers/wrappers.pb.go
similarity index 100%
rename from types/wrappers/wrappers.pb.go
rename to ptypes/wrappers/wrappers.pb.go
diff --git a/types/wrappers/wrappers.proto b/ptypes/wrappers/wrappers.proto
similarity index 100%
rename from types/wrappers/wrappers.proto
rename to ptypes/wrappers/wrappers.proto