Upgrade EndOfLifeDotDate Component Backend to API v2
**Introduction**
At present, the import and management of components fetched from 3rd party EOL backends such as https://endoflife.date, rely on baked-in configuration in e.g. `Gateway::systemProducts()` which means the system doesn't fully benefit from new products, as they become available in/from these backends.
Note: v2 of endoflife.date's **is now available** ([here](https://endoflife.date/docs/api/v1/)). This ticket and the API work will need to be modified to suit.
This issue involves showing x2 menus in the settings UI;
1. **Menu 1** Show all **product-names** available with data fetched from the 'getAll()` gateway method
2. **Menu 2** As per the existing menu in the "Settings" area, shows saved component records.
Showing all product-names means that newer ones available from the API can be added to the system in future, as they become available.
Submitting the form in the "Settings" area takes the user's POSTed product-name selections (from menu 1), and uses them to make more specific calls to the API.
Modify import logic to account for brand new products that we'd actually like to _add_ to the system:
1. If `$component->Name` _is not found_, flag it as `Status=PENDING` and update the UI (users may have removed _every_ instance of a product because it isn't relevant and we don't want to override their decision).
2. `If $component->Name` _is found_ and its version is higher than any which exists, flag it `Status=PENDING` and update the UI in some way explaining to the user that they can optionally augment their local components.
**Acceptance Criteria**
* I can see two UI fields in the "Settings" admin:
* 1 (New) "Products" is populated by a call to `$eolService::getAll()` and shows _only product names_.
* 2 (Existing) "Components" shows saved Component records (We _could_ use the same field, but it makes for some messy-as logic on-save)
* The "Components" field is populated by a call to `$eolService::getAll()`.
* On save:
* Run componentimporttask to add/update/remove Component records
* Needs a service method to filter by the API's date fields
* Refactor task to _either_ take components from API or from constructor args/getSourceComponents()
* User is encouraged to deselect component versions they're not interested in and to save again
* How to deal with new versions available from the backend?
* New _versions_ of _existing_ products will be shown and highlighted in _yellow_ by querying local Components _and_ newer versions of saved products
* New _products_ are handled in ListBoxField #1 (see description above)
* Updates are managed by adding a new crontab, which operates on saved Component records
* Convert all array-handling logic of API results into an instance of Component!
* I can see the relevant icon for each imported in the App Centre UI.
issue