Move the nickname utf-8 decoding before the first JSON encoding boundary.

Most of the submit logic now happens inside a task, so the payload is
encoded as JSON. We sometimes get nicknames that contain invalid utf-8
symbols and want to ignore those rather than fail everything.