Refactor abc::*vector class hierarchy to match abc::*str_ semantics

Refactor and rename abc::*vector classes to gain the same explicit
semantics advantage enjoyed by abc::*str_.

For now, the class hierarchy does not include abc::ivector because there’s
no need for it at the moment, but the hierarchy is split in immutable/
mutable just like abc::*str_, so abc::ivector can be added if necessary.

This gives consistency to the move constructors/assignment operators of
abc::*vector, which now are always non-throwing when moving from one type
to the same type (again, like abc::*str_).

Changes ripple all the way into abc::_raw_*_vextr_impl, since now both
implementation classes offer a assign_move_dynamic_or_copy() method,
previously only used for strings.

Also add code documentation for a number of methods.
Use this-qualified lookup for base class references

More of commit 7f962f76d01d1187ed218c3ba3d203593a825e74, except this code
is apparently not covered by tests, so the compiler hasn’t complained
about it yet.
Use C++11 type traits when compiling with GCC 4.7

Older versions of GCC (as well as MSC16) use non-standard type traits,
which seem to be not supported anymore.