Port StringType class from WSME trunk

Port the StringType class and its tests from WSME trunk. The StringType
is needed for the implementation of our PatchType class that will make
use of the complex type validation of WSME to remove some of the custom
validation code.

See: https://review.openstack.org/#/c/60194/

Change-Id: If387ed915e4d0102112f93ed16eee13775b54f4c
Merge "Port StringType class from WSME trunk"
Add -U to pip install command in tox.ini

Ask pip to upgrade packages in the virtualenv so that a long-lived
virtualenv is still kept up to date as external dependencies change.

Change-Id: Ife76a83be95fed7cc4b99bb50a97277d0751e76c