Auto-escape: use std ini updating funcs

There are standard functions that update ini settings, use them instead
of writing our own. Also, turn __auto_escape into a bool cause that's
how it's used and __auto_escape_flags into a long to be compatable with
OnUpdateLong.
Auto-escape: no escaping if passed a certain class

If an object that is an instance of a class with a name matching the
ini setting (__auto_escape_exempt_class) is passed through short-tags it
*won't* be escaped.

This effectively allows strings to be *tagged* (wrapped in a class) 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.

Note: classname is used instead of class inheritance because this is an
often-executed piece of code.

ini_set("__auto_escape_exempt_class", "HtmlString");

// ======== 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

Conflicts:
	Zend/zend_globals.h