Use String shims that conform to ECMAScript 6

When more and more browsers start implementing “startsWith” etc, it would be nice to have consistent behavior between them. Also, use proper descriptors (configurable, writable and non-enumerable).