Refactored start and added task switching

Moved start functionality into it's own file. Added the --switch or -s
to the start function to enable the ability to change the current task.
This is not done yet. The switch needs to update the sequence
information for the current task before recursively calling the main.

Also, the task name resolution has changed to just ignore "-" and flags
and parse the full argv for the task name, this is different from what
it did before. Which was to stop if it hit a flag at all.