Fixed #19496 -- Added truncatechars_html filter.

truncatechars_html was incorrectly adding the '...' to text under the truncate length but only by 3 or fewer characters. 
```python
>>> truncatechars_html('abcd', 4)
u'a...'
````
It now correctly returns:
```python
>>> truncatechars_html('abcd', 4)
u'abcd'
````