shill: Add RTNLMessage: rtnl message parser/composer

Add RTNLMessage type.  This will be used to remove some bespoke
messaging parsing, but more immediately, it will be used by the
routing code.

BUG=chromium-os:17277
TEST=New unittest

Change-Id: Idb0559b907f018e021193c51d30f5027c8debec3
Reviewed-on: http://gerrit.chromium.org/gerrit/4183
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/ip_address.h b/ip_address.h
index 1677ca9..f931aee 100644
--- a/ip_address.h
+++ b/ip_address.h
@@ -15,11 +15,10 @@
 
 class IPAddress {
  public:
-  enum Family {
-    kAddressFamilyUnknown,
-    kAddressFamilyIPv4 = AF_INET,
-    kAddressFamilyIPv6 = AF_INET6
-  };
+  typedef unsigned char Family;
+  static const Family kAddressFamilyUnknown = AF_UNSPEC;
+  static const Family kAddressFamilyIPv4 = AF_INET;
+  static const Family kAddressFamilyIPv6 = AF_INET6;
 
   explicit IPAddress(Family family);
   IPAddress(Family family, const ByteString &address);