Remove new VectorX usage in static (out VectorX) methods

Change all VectorX static methods with ```out VectorX``` parameters to directly assign the fields rather than constructing new VectorXs.

```Vector3.Reflect``` had the wrong spacing, fixed.
```Vector4``` must have had wrong line endings, sorry.

Whitespace free diff (needed for ```Vector4```)
https://github.com/danzel/MonoGame/commit/36b4c5edaf4417f80ac57270f0a7ba7e3fcfefc6?w=1

When doing this I had to be careful not to always just assign to the output object. In cases where we use one of the values to calculate another (use X to calculate Y), we must not change X until all of the calculations are done as the objects may be referencing the same object.

A good example of this is ```Vector2.Transform```:
https://github.com/danzel/MonoGame/commit/36b4c5edaf4417f80ac57270f0a7ba7e3fcfefc6?w=1#diff-98c66ffb85bd2f51034c56bffda1119fL411
position and result could reference the same object, so we cannot assign result.X immediately or it would change the calculation of Y.
This is not normally necessary and leads to extra code, as such is only done when required.

Fixes #1611