Make str and bytes be proper types

This makes 'str' and 'bytes' be proper type objects and implements standard Python3 constructor arguments, including efficient str<->bytes conversion. This implements first part of #349.