shill: Fleshes-out and adds some netlink nested attributes.

Adds some methods (|Encode|, for example) to complete nested attributes.
In addition, some attributes have been added and updated.  Some existing
nested attributes are updated to using methods submitted in previous
CLs; some previously attributes previously mis-labeled as raw (I'm
looking at you Nl80211ScanFrequencies and Nl80211ScanSsid) are updated
to nested (since these attributes are used and tested in the Config80211
unittests, those tests -- which pass -- are now testing the nested
attribute parsing methods); and a new nested attribute is added.

BUG=chromium-os:37742
TEST=unittests

Change-Id: Ibcb8fc9b8882b20e2ec901fb706c17a7304cc347
Reviewed-on: https://gerrit.chromium.org/gerrit/44181
Commit-Queue: Wade Guthrie <wdg@chromium.org>
Reviewed-by: Wade Guthrie <wdg@chromium.org>
Tested-by: Wade Guthrie <wdg@chromium.org>
diff --git a/attribute_list.h b/attribute_list.h
index b165d8c..e5e5790 100644
--- a/attribute_list.h
+++ b/attribute_list.h
@@ -93,6 +93,8 @@
   const NetlinkRawAttribute *GetRawAttribute(int id) const;
 
  private:
+  friend class NetlinkNestedAttribute;
+
   // Using this to get around issues with const and operator[].
   NetlinkAttribute *GetAttribute(int id) const;