Add a passive Callback functionality to the updater.

The callback will be notified (on the main thread) when an update
check has finished, regardless of the result.

This allows for custom messages, etc. to be processed on the main
thread without blocking the server.
Avoid thread creation overhead when making an Updater with a bad ID.