refactor(admin): migrate IP bans to new architecture
Move IP ban CRUD to IpBanController (rights>=9 super-group) under REST routes
/admin/ip-bans (list/new/prepare/store/search/clear/detail/delete). Add BanIp
model, IpBanType enum, IpBanRepositoryInterface (conflict/by-ip/CRUD), and use
cases PrepareIpBan (reuses IpRangeParser; checks conflicts and the admin's own
IP), StoreIpBan, GetIpBanList, ManageIpBan. Convert the ?mod= GET mutations to
POST forms with CSRF and store reason/url raw (escape on output). Remove
includes/ipban.php and the dispatcher entry; point both sidebars at /admin/ip-bans.
/admin/ip-bans (list/new/prepare/store/search/clear/detail/delete). Add BanIp
model, IpBanType enum, IpBanRepositoryInterface (conflict/by-ip/CRUD), and use
cases PrepareIpBan (reuses IpRangeParser; checks conflicts and the admin's own
IP), StoreIpBan, GetIpBanList, ManageIpBan. Convert the ?mod= GET mutations to
POST forms with CSRF and store reason/url raw (escape on output). Remove
includes/ipban.php and the dispatcher entry; point both sidebars at /admin/ip-bans.