Make abc::{i,{,s,d}m}str_ copy constructors and assignment ops more clear

Remove overloads taking str_base_ arguments, replacing them with *str_
overloads instead.

Make the resulting overloads (new and not) invoke _raw_str methods
directly (bypassing the class hierarchy), to make code behavior more
explicit.

Enforce no-throw guarantee for all same-type move-constructors and
assignment operators (i.e. the code they execute will in no circumstances
explicitly throw an exception; in other cases, such as memory violation
errors, exceptions are still possible).
Other move-constructor and assignment operator overloads are allowed to
throw exceptions, since they won’t be used in containers..

Also add code comments to some methods.