improve string/contains behavior to match ES6. closes #50