internal/impl: allow reflection on typed nil pointers

Similar to how generated messages allow you to call Get methods on a
nil pointer, we permit similar functionality when protobuf reflection
is used on a nil pointer.

Change-Id: Ie2f596d39105c191073b42d7d689525c3b715240
Reviewed-on: https://go-review.googlesource.com/c/152021
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/impl/message.go b/internal/impl/message.go
index 089c6e7..328103c 100644
--- a/internal/impl/message.go
+++ b/internal/impl/message.go
@@ -169,7 +169,7 @@
 
 func (mi *MessageType) dataTypeOf(p interface{}) *messageDataType {
 	mi.init(p)
-	return &messageDataType{pointerOfIface(&p), mi}
+	return &messageDataType{pointerOfIface(p), mi}
 }
 
 // messageDataType is a tuple of a pointer to the message data and
@@ -216,7 +216,7 @@
 	return m
 }
 func (m *messageWrapper) ProtoUnwrap() interface{} {
-	return m.p.asType(m.mi.goType.Elem()).Interface()
+	return m.p.AsIfaceOf(m.mi.goType.Elem())
 }
 func (m *messageWrapper) ProtoMutable() {}