Make Vector#initialize amenable to overriding (in a subclass)

Unfortunately, to be "subclassing-friendly", I can't override
Vector.new to return the canonical empty vector if called with no
arguments. So Vector.new will always allocate a new object on every
call. This is the price of keeping Vector open for inheritance.