shill: DHCPConfig: Optionally use minimal config

Add another argument to the DHCPConfig constructor to specify
whether a cut-down minimal set of options should be requested
from the DHCP server.  This adds a command line argument to
the startup of the DHCP client.  Propagate this upwards to the
Device, and add a placeholder Device::ShouldUseMinimalConfig()
method which will decide whether to enable this feature in the
DHCPConfig in a later CL.

A few ancillary changes went into this CL:

  - The DHCPProvider needed another argument to CreateConfig
    since it constructs DHCPConfig objects.
  - Added a unit test for the Device::ShouldUseArpGateway()
    superclass function next to Device::ShouldUseMinimalConfig()
    test.
  - Fixed the DHCPConfigTest::Start* tests to use the IsDHCPCDArgs
    matcher.  For some reason that matcher sat unused and
    atrophied.  Added a new test that exercises the minimal config
    flag.

BUG=chromium:297607
TEST=Unit tests.  Run network_DhcpNegotiationSuccess autotest.

Change-Id: If0dcaf328ca6dfac7127a6badd409a4138c95760
Reviewed-on: https://chromium-review.googlesource.com/174531
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/dhcp_provider.cc b/dhcp_provider.cc
index 10ddd64..7a9cf96 100644
--- a/dhcp_provider.cc
+++ b/dhcp_provider.cc
@@ -55,7 +55,8 @@
 DHCPConfigRefPtr DHCPProvider::CreateConfig(const string &device_name,
                                             const string &host_name,
                                             const string &lease_file_suffix,
-                                            bool arp_gateway) {
+                                            bool arp_gateway,
+                                            bool minimal_config) {
   SLOG(DHCP, 2) << __func__ << " device: " << device_name;
   return new DHCPConfig(control_interface_,
                         dispatcher_,
@@ -64,6 +65,7 @@
                         host_name,
                         lease_file_suffix,
                         arp_gateway,
+                        minimal_config,
                         glib_);
 }