In order to make this possible, I've added a new `sync()` method to the
Shellable protocol, which now should allow us to run shell commands
synchronously. Back to basics, as this was how *all* commands were
run in legacy versions of PHP Monitor.
The advantage here is that there is now a choice. Previously, you'd
have to use the `system()` helper that I added.
Usage of that helper is now discouraged, as is the synchronous
shell method, but it may be useful for some methods where waiting
for the outcome of the output is required.
(Important: the `system()` helper is still required when determining
what the preferred terminal is during the initialization of the
`Paths` class.)
Dictionary key order in Swift isn't a thing, so the process is
now a two-pronged approach: 1) check for specific apps, 2) check for
specific broad frameworks after no other matches were made.
Previously, detection would only work correctly some of the time.
Also cleaned up the `getNotableDependencies()` method.
It was necessary to do some summer cleaning. Here's what's changed:
* First, I'm taking a new modular approach to Swift-based components
that are part of PHP Monitor.
* I've fixed the naming of various parts of the app. I plan on doing
an even deeper check in the future. The following are affected:
- "PHP Formulae Status" is now known as "PHP Version Manager".
- "Warnings List" is now known as "PHP Doctor".
- The associated window controllers have also been updated.
(I've also added a new module: "PHP Config Editor". We'll see what that
brings in the future... but the main purpose will be to edit key PHP
configuration values without needing to go to the .ini files.)