Add WakeupController and NFLogListener

These classes work together to parse and dispatch NFLOG messages in
response to inbound packets annotated by the WiFi driver.

Test: as follows
    - built
    - flashed
    - booted
    - netd_unit_test passes

Change-Id: Id26d62858bf4bc4186ae66850f08077adf6fc2ac
diff --git a/libnetdutils/Status.cpp b/libnetdutils/Status.cpp
index 9df2367..e36889b 100644
--- a/libnetdutils/Status.cpp
+++ b/libnetdutils/Status.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include <sstream>
 #include "netdutils/Status.h"
 #include "android-base/stringprintf.h"
 
@@ -28,6 +29,12 @@
     return Status(err, base::StringPrintf("%d : [%s] : %s", err, strerror(err), msg.c_str()));
 }
 
+std::string toString(const Status status) {
+    std::stringstream ss;
+    ss << status;
+    return ss.str();
+}
+
 std::ostream& operator<<(std::ostream& os, const Status& s) {
     return os << "Status[code: " << s.code() << ", msg: " << s.msg() << "]";
 }
diff --git a/libnetdutils/include/netdutils/Status.h b/libnetdutils/include/netdutils/Status.h
index eacf791..5a89289 100644
--- a/libnetdutils/include/netdutils/Status.h
+++ b/libnetdutils/include/netdutils/Status.h
@@ -78,6 +78,8 @@
 // TODO: msg is only a placeholder for now
 Status statusFromErrno(int err, const std::string& msg);
 
+std::string toString(const Status status);
+
 std::ostream& operator<<(std::ostream& os, const Status& s);
 
 #define RETURN_IF_NOT_OK_IMPL(tmp, stmt)           \