all: allow configuring default-routes as manual, static routes

Up until now, a default-route (with prefix length zero) could not
be configured directly. The user could only set ipv4.gateway,
ipv4.never-default, ipv4.route-metric and ipv4.route-table to influence
the setting of the default-route (respectively for IPv6).

That is a problematic limitation. For one, whether a route has prefix
length zero or non-zero does not make a fundamental difference. Also,
it makes it impossible to configure all the routing attributes that one can
configure otherwise for static routes. For example, the default-route could
not be configured as "onlink", could not have a special MTU, nor could it be
placed in a dedicated routing table.

Fix that by lifting the restriction. Note that "ipv4.never-default" does
not apply to /0 manual routes. Likewise, the previous manners of
configuring default-routes ("ipv4.gateway") don't conflict with manual
default-routes.

Server-side this all the pieces are already in place to accept a default-route
as static routes. This was done by earlier commits like 5c299454
('core: rework tracking of gateway/default-route in ip-config').

A long time ago, NMIPRoute would assert that the prefix length is
positive. That was relaxed by commit a2e93f2d ('libnm: allow zero
prefix length for NMIPRoute'), already before 1.0.0. Using libnm from
before 1.0.0 would result in assertion failures.

Note that the default-route-metric-penalty based on connectivity
checking applies to all /0 routes, even these static routes. Be they
added due to DHCP, "ipv4.gateway", "ipv4.routes" or "wireguard.peer-routes".
I wonder whether doing that unconditionally is desirable, and maybe
there should be a way to opt-out/opt-in for the entire profile or even
per-routes.

https://bugzilla.redhat.com/show_bug.cgi?id=1714438
15 jobs for th/static-default-route in 41 minutes and 27 seconds (queued for 10 minutes and 5 seconds)
Status Job ID Name Coverage
  Test
passed #493434
allowed to fail
checkpatch

00:01:25

manual #493439
allowed to fail manual
t_centos:7.5.1804
passed #493440
t_centos:7.6.1810

00:26:07

passed #493446
t_debian:10

00:19:32

passed #493445
t_debian:9

00:20:09

passed #493448
t_debian:sid

00:18:29

manual #493447
allowed to fail manual
t_debian:testing
passed #493435
t_fedora:28

00:31:54

passed #493436
t_fedora:29

00:40:04

passed #493437
t_fedora:30

00:29:46

manual #493438
allowed to fail manual
t_fedora:rawhide
passed #493441
t_ubuntu:16.04

00:18:46

passed #493442
t_ubuntu:18.04

00:19:05

manual #493444
allowed to fail manual
t_ubuntu:devel
manual #493443
allowed to fail manual
t_ubuntu:rolling