Initial split of internal and external api types.

It's because you wouldn't get the address of the variable you passed to ValueOf; you get the address of the copy that go made for you. I remember the bad old days when reflect didn't have this restriction. It was super easy to accidentally write a really confusing bug.