Helpers return content instead of updating a morph

This also lets helpers be transparently usable as both nested helpers (subexpressions) and unnested helpers.