truncate and truncateWords can now preserve HTML

Ref #3301 
New `truncateHtml` method that uses `HTMLPurifier`