Allow converting of shared_vector between types
Conversion utilizes castUnsafe<TO,FROM>().
Converting to/from void is supported. Convert to void
is an alias for static_shared_vector_cast<void>().
Convert from void utilizes shared_vector<void>::original_type()
and throws std::runtime_error if this is not valid.
Casting now handles 'const void'
is most places where 'void' can be used.