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"