Split setup check phases into "preflight" and "post-config"
Summary:
Ref T11589. This runs:
- preflight checks (critical checks: PHP version stuff, extensions);
 - configuration;
 - normal checks.
 
The PHP checks are split into critical ("bad version") and noncritical ("sub-optimal config").
I tidied up the extension checks slightly, we realistically depend on cURL nowadays.
Test Plan:
- Faked a preflight failure.
 - Hit preflight check.
 - Got expected error screen.
 - Loaded normal pages.
 - Hit a normal setup check.
 - Used DarkConsole "Startup" tab to verify that preflight checks take <1ms to run (we run them on every page without caching, at least for now, but they only do trivial checks like PHP versions).
 
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T11589
Differential Revision: https://secure.phabricator.com/D16500