Auto-escape: no escaping if passed a certain class

If an object that is an instance of a class named "HtmlString" is passed
through short-tags it *won't* be escaped.

This effectively allows strings to be *tagged* as containing HTML and
still used as normal without having to use <?raw=. This encourages
tagging strings as containing HTML where they are generated rather than
where they are outputted. The eliminates the need for developers to
trace that info (html or not) from generation site to usage in a template.

// ======== Helper functions
function input_tag($options = []) {
   // ...
   return new HtmlString("<input ..></input>");
}

function user_name() {
   return $user->name;
}

// ========= Template
<?= input_tag() ?> // Wrapped in HTMLString == not escaped
<?= user_name() ?> // Regular string == escaped