Wire up the disable_expiry proto field through gRPC, state, database
and CLI layers to allow clearing a node expiry.
- Update NodeSetExpiry to accept *time.Time (nil disables expiry)
- Fix SetNodeExpiry to persist via db.NodeSetExpiry directly instead
of persistNodeToDB which omits the expiry field
- Add mutual exclusion validation for expiry vs disable_expiry in gRPC
- Add --disable flag to headscale nodes expire CLI command
- Fix missing return after ErrorOutput in both expire and disable paths
- Add unit test TestDisableNodeExpiry in db/node_test.go
- Add integration test TestDisableNodeExpiry in general_test.go
Fixes#2681
Co-authored-by: Marco Santos <me@marcopsantos.com>