litter String methods with isNone() checks

This is kind of suboptimal but C++ does not do dynamic typing
(at least, not out of the box)
a 'None' String will almost always throw ReferenceError
len() and cap() for a 'None' String will return 0
... also improved String.join()
force free all memory in use by vector
added force_free() for containers