Clarify in PyString when we are dealing with bytes or UTF-16.

Minor change for clarity, preparatory to avoiding byte-checking
(see issue #2037) when data can be guaranteed to be bytes.
Avoid PyString range-test in concatenation and join.

Adds private constructor for use when we can guarantee bytes.
Apply in __add__ and join.
Avoid PyString range-test in operations involving sub-strings.

Uses the private "no-check"constructor for these common operations:
intends to restore performance in most applications.