selectionEndLine() {
    let {line} = lineContainingChar(this.state.lines, this.state.position, this.state.positionEolStart)
    let toChar
    let positionEolStart = false
    if(line.isEof()) {
      toChar = this.state.position
      positionEolStart = true
    } else if (line.isHard()) {
      toChar = this._relativeChar(line.end, -1, 'limit')
    } else {
      toChar = line.end
    }
    this._modifySelection(toChar, positionEolStart)
    this.setActiveAttributes()
  }
Google docs behavior (as of 2015-06-22) is:
- line with soft return, select line with space at end
- line with hard return, select line without selecting the hard return (no action on empty lines)
- EOF line, no action

Word 2010 behavior is:
- line with soft return, select line with space at end
- line with hard return, select line including the hard return (same on empty lines)
- EOF line, show "space" selection at EOF containing a newline

We implement the Google docs behavior here, which seems a bit more intuitive.