Make creation of options object more intelligent.

By using the spec argument we can define the list of accepted attributes
for the options object.  Additionally, we no longer have to pass in a
list of options to set to None as we now do this by default.
Add activation key and consumer ID options.
Refactor options parsing out of main class to allow for easier testing.

Also rename migration arguments to something very generic: "legacy" and
"destination".
Add --registration-state option.
Rename system deletion function to match new terminology.
UI improvements.  Make messaging more consistent.
Add a context manager to the test utils to mock calls to open.

Slightly refactor method signature on get_system_id().
Spin off a Satellite 5 to 6 specific script.
Consolidate the register and subscribe steps.

This is necessary because when registering with a consumer ID,
subscription manager currently has a bug where it returns a non-zero
exit code even though registration occurred successfully.  Since we rely
on the exit code to tell if an error occurred or not, the migration
script aborts prematurely.  By adding a --auto-attach to the
registration step we can avoid the issue.
Add migration tests.