pvector: Make normalize() a pure function.

This might not seem obvious because of the syntactic sugar of abstract
types, but now the normalize() function returns a new PVector instead of
changing the existing PVector, the "arguments" to the function are the
abstract type itself, so I'd call it "pure, but with syntactic sugar".

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
pvector: Use x/y properties in nermalize().

If we want to change the underlying primitive of the abstract type, we
now only need to change the property methods.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>