Refactor DhcpClient to support new DhcpRefreshingAddressState.

The DhcpRefreshingAddressState is used to refresh L3 IP address on some
specific networks upon L2 roaming. If DHCP refresh succeeds, DhcpClient
will stay at the BOUND state again; if not, notify IpClient DHCP refresh
address failure and tell wifi to take corresponding action then via
onReachabilityFailure callback.

DhcpRefreshingAddressState inherits from DhcpRebindingState, the only
change on DhcpRefreshingAddressState is just notifying IpClient refresh
failure when receiving DHCPNAK, which results in IpClient triggers
onReachabilityFailure callback first.

Bug: 204723906
Test: atest NetworkStackTest NetworkStackIntegrationTests
Change-Id: If2e8d7397e2082dc8610fdb4ca98c80ab37afb5a
3 files changed