Clean up and make SpecialGlobalBlock use FormSpecialPage
This simplifies the code a lot and increases its readability.
- Some changes have also been made to the interface in this commit
for simplicity. Notably, labels for expiry and reason other selector
is now shown only next to the dropdown menu. Also, "Options" label
next to anon-only and also-local checkbox has also been removed.
- The subtitle on the success page is now buildSubtitleLinks() instead.
This was changed because there is no real reason to show the success
message twice and the links are more useful.
- 'globalblocking-block-errors' message has also been removed as
this just adds noise to the page and specific error messages
are more helpful.
- Previously, the database was queried whenever Special:GlobalBlock
was visited but this is now done only if the target is specified.
- This also fixes T98891 making the log entry target consistent with
the actual IP range that got inserted to the table. This allows us to
show the log entry for newer blocks made for IP ranges in cases where
an unsanitized IP range got submitted.
- buildExpirySelector() has also been rewritten; code is similar to