error_message et al. now works like sprintf by accepting a format string and list