Implement Vector interfaces

I just want to stress that there is a difference between simply casting to an int and actually flooring when it comes to negative values. Casting truncates (discards the mantissa), while flooring picks the integer closest to negative infinity. One may want to argue that truncating is the preferred way, but it creates a function that is inconsistent around 0, where truncating anything in the entire interval of `]-1;1[` results in 0, which could lead to issues of seemingly inconsistent/faulty iterators over vector spaces.