Do not make `Vector's a struct.

Being a `struct' and not a type alias for `[]Value' breaks
`json.Marshal' and similar functions.  Since the Vector's `data' field
is private, the marshaller cannot pick it up.  This commit changes the
representation of `Vector' to just a slice of `Value's.  At the cost of
another level of indirection, the `Append' operation can be performed
without the caller having to keep track of any returned references.