fixed range.moveCharLeft in selection.js and anything downstream that affected; added tests for the range extensions