Rescue and put into :uninstall_errored if something goes wrong while
destroying, which can happen. I think it is safe to expose the full
error message from the destroy error.
Remove the :uninstalled state as no longer used.
All applications except for Jupyter have the same #set_initial_status,
so create a new shared example which we include in all application specs
except for juptyer_spec. Juptyer specs already have specs for it's
version of #set_initial_status
This makes this consistent with :updated. And also avoids a potential
issue where an install errors which means that that the recorded version
won't necessarily reflect the version that is actually installed.
Note: updating version column after :updating is not ideal in the
updating -> update_erroed case. This will mean that the application now
records the version as the version that failed to upgrade, not the
version that it is currently on.