move: Remove detail::move_l_signed()

This function is no longer used anywhere
move: Rename move_l() to move##_l() and move_r() to move##_r()

Implicit lane width is not only confusing, but also not future proof
lest we will want to add truly 256-bit wide move_l() or move_r()
functions.

This is API-breaking change.
align: Rename align() to align##()

Implicit lane width is not only confusing, but also not future proof
lest we will want to add truly 256-bit wide align() function.

This is API-breaking change.
align: Inline the neon::detail::align() function
cast: Do sizeof comparison only if we're using memcpy()

Mask types may have different size than vector types even though it is
convertible to all of them.
cast: Forbid conversions between vector and non-vector types
traits: Fix vector and mask recognition

The fixed implementation recognizes arbitrary length vectors, masks
and vector expressions.
cast: Define cast_wrapper in cast.inl

This avoids the need to forward-declare cast implementations
cast: Simplify the implementation of casts
Split vector template declatations from internal expression type decls
Rename {set,load}_broadcast to {,load_}splat, make them free functions

The new approach is much more convenient since there's no need to
specify the destination type. For example, the following just works:

int8<16> a = splat(2);

int8_t* p = ...
a = load_splat(p);