add printf to fmt.
uses reflection to determine arguments.
for now, the arguments must be provided as a struct; the compiler
will soon do the packaging automatically for "..." parameters.

R=rsc
DELTA=1436  (909 added, 520 deleted, 7 changed)
OCL=17823
CL=17831
diff --git a/src/lib/reflect/value.go b/src/lib/reflect/value.go
index 7d6172d..80ad46e 100644
--- a/src/lib/reflect/value.go
+++ b/src/lib/reflect/value.go
@@ -444,9 +444,9 @@
 
 export type PtrValue interface {
 	Kind()	int;
-	Sub()	Value;
 	Type()	Type;
-	Indirect()	Addr;
+	Sub()	Value;
+	Get()	Addr;
 }
 
 type PtrValueStruct struct {
@@ -462,12 +462,12 @@
 	return v.typ
 }
 
-func (v *PtrValueStruct) Indirect() Addr {
+func (v *PtrValueStruct) Get() Addr {
 	return *AddrToPtrAddr(v.addr)
 }
 
 func (v *PtrValueStruct) Sub() Value {
-	return NewValueAddr(v.typ.(PtrType).Sub(), v.Indirect());
+	return NewValueAddr(v.typ.(PtrType).Sub(), v.Get());
 }
 
 func PtrCreator(typ Type, addr Addr) Value {