tundra.string:substitute now optionally replaces null or non-existent values with a given default value