Started on code to check whether an app needs to be updated

We check if we need to re-solve because an input to the solve has
changed, and we check if it's time to do a background update. But:

- We just assume that any current selections are still valid
- If we need to solve or update, we just fall back on the Python