Make function output from locals autoescaped, keep macros safe

Continuing work from @andrewrk from gh-494

Slightly alternative approach, albeit, potentially crazy... Uses a `String` object to mark the actual string itself as `safe`. When the `escape` filter hits a `String` object, it checks if the input is `safe`. If it is, just returns the string value and continues on.
Yes, however, I like to be precise and ensure that the input is actually a string before just calling it safe and returning it. I'm going to add an extra check/assertion in here.