Add support for generic internal error reporting

Currently, we're using brillo::Error for internal error reporting.
However, brillo::Error is more tailored for D-Bus.

Instead, implement a new Error class (trimmed down version of
shill::Error) for internal error reporting, and provide
functions for converting it to RPC specific error object.

Bug: None
TEST=Run newly added unit tests

Change-Id: I2b518fae6eccb8dc9f9f0e96b941289c3846a9af
diff --git a/Android.mk b/Android.mk
index d2d0d00..c13c1ae 100644
--- a/Android.mk
+++ b/Android.mk
@@ -76,6 +76,7 @@
     device_info.cc \
     dhcp_server.cc \
     dhcp_server_factory.cc \
+    error.cc \
     event_dispatcher.cc \
     file_writer.cc \
     firewall_manager.cc \
@@ -109,6 +110,7 @@
     device_info_unittest.cc \
     device_unittest.cc \
     dhcp_server_unittest.cc \
+    error_unittest.cc \
     fake_device_adaptor.cc \
     hostapd_monitor_unittest.cc \
     manager_unittest.cc \