added a 2D vector class

template vector class that can be used with different base types like float, double, int ...
the class includes overloaded operators and basic vector functions.
often used 2D vectors types are already declared for convenience: float2, double2, uint2, int2