Make NetworkFactory a concrete class and divide responsibilites between it and NetworkAgent.
Factory will track requests and by default give a single connect/disconnect api for ease
of use. Then NetworkAgent is created and destroyed as needed with very simple logic.
Change-Id: I401c14a6e5466f2fc63b04219b97ff85bb9af291
(cherry picked from commit 8af038d056)
1. If DHCP fails, set the score to 0. Coupled with changes in
NetworkAgent, that will cause us to retry DHCP the next time
the link is plugged in.
2. Send LinkProperties before sending NetworkInfo, because of
a race in NetworkAgent.
3. Make Ethernet work properly after a runtime restart.
4. Improve locking.
5. Clarify how things work in comments.
Bug: 15295359
Change-Id: I06cd683a1633838bca1ec177e61f1829889d3934
(cherry picked from commit 21be8b6dc7)