replace dup gather/scatter interfaces with common header

The interfaces in the different Vector class implementations are all
duplicated. For gather/scatter I created headers that are included from
inside the class declaration that contain the common interface and
inline forwarding implementations to gatherImplementation (unmasked and
masked overloads).

The .tcc files then implement these two gather/scatterImplementation
functions, possibly specialized for T.

The more complicated gather/scatter functions as members of class Vector
are thus gone (i.e. struct member pointers, double indexes, etc.). This
functionality will be restored via generic subscript operators.

Signed-off-by: Matthias Kretz <kretz@kde.org>
Vector() ctor and Vector::size() function

Replaced Vector() with an include to generalinterface.h. From there
Vector() is defaulted and in addition a constexpr function size()
returns the Size member. The size() function is important for using a
Vector object in a generic context where otherwise containers are used.

Signed-off-by: Matthias Kretz <kretz@kde.org>