fleetd: distinguish restart context when beating the Heart
fleetd: distinguish restart context when beating the Heart

When beating the Heart in the clean start context, call Heart.Register()
to avoid such a case of registering machine with the same ID. In the
restart context, however, call Heart.Beat() to allow registration with
the same ID. That way fleetd can handle the machine presence in a
graceful way.

Without this patch, functional tests like TestSingleNodeConnectivityLoss
fail, because Heart.Register() would always return an error, especially
when it's in the restart context. That could result in a case of fleetd
being unable to recover in an expected time frame.

coreos/fleet,jonboulle/fleet,giantswarm/fleet,endocode/fleet,giantswarm/fleet,coreos/fleet,endocode/fleet,dalbani/fleet,dongsupark/fleet,dalbani/fleet,giantswarm/fleet,dongsupark/fleet,jonboulle/fleet,dongsupark/fleet,jonboulle/fleet,dalbani/fleet,coreos/fleet,endocode/fleet