allow running tasks that appear to be running with --force

this is a workaround for #1975086
1968226 - manage IPs individually

the ip_addresses datastructure is now indexed as within the SQL
database, with the serial being the key to the array.

this allows us to individually add/change/remove entries in the IP
list of a server.

this seems to work very well in my manual tests, but it could use a
bit more AJAXy polish and further testing.
initialize IP addresses properly

gethostbynamel() returns an array already
fixup warnings
Issue #1980136 by Deciphered, anarcat: Allow setting default profile from the front-end.
Initialize the $node->ip_addresses for a new server
Issue #1990370 by ergonlogic: Enable Hosting feature dependencies.
use the proper IP address when *adding* new IPs, #2000946 by trrroy
allocate IPs for each servers in the cluster

this should really be handled the server class hierarchy, but it is
all broken right now so we keep going procedural. it's ugly but should
work.

idea by trrroy.
Issue #1982716 by Jon Pugh: Fixed hosting_task_confirm_form()'s cancel button should respect ?destination= query parameter.
enable aliases by default
fix a typo in IP allocation code
pass ssl parameters down properly in nginx, close #1784108
allocate IPs properly in clusters, closes #2000964
Issue #606120 by Mig5, ergonlogic: Add class for locked platforms and disabled sites.
Issue #2023621: Fix SSL allocation on non-cluster servers.