lxd/cluster/gateway: Set 30s TCP_USER_TIMEOUT and keep alive timers in dqliteProxy
lxd/cluster/gateway: Set 30s TCP_USER_TIMEOUT and keep alive timers in dqliteProxy

Set TCP_USER_TIMEOUT option to limit the maximum amount of time in ms that transmitted data may remain
unacknowledged before TCP will forcefully close the corresponding connection and return ETIMEDOUT to the
application. This combined with the TCP keepalive options on the socket will ensure that should the
remote side of the connection disappear abruptly that LXD will detect this and close the socket quickly.
Decreasing the user timeouts allows applications to "fail fast" if so desired. Otherwise it may take
up to 20 minutes with the current system defaults in a normal WAN environment if there are packets in
the send queue that will prevent the keepalive timer from working as the retransmission timers kick in.
See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dca43c75e7e545694a9dd6288553f55c53e2a3a3

Signed-off-by: Thomas Parrott <6b778ce645fb0e3dde76d79eccad490955b1ae74@canonical.com>

stgraber/lxd,lxc/lxd,hallyn/lxd,stgraber/lxd,lxc/lxd,hallyn/lxd,lxc/lxd,lxc/lxd,stgraber/lxd,stgraber/lxd,stgraber/lxd,lxc/lxd,hallyn/lxd,hallyn/lxd,stgraber/lxd,hallyn/lxd,lxc/lxd,stgraber/lxd,hallyn/lxd,lxc/lxd