Task ID overhaul

Old IDs are now considered positions, and are no longer contained in the
task object.  New IDs are 5-character hex strings, stored in the task
list files with a `$` prefix.