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/apmanager.gyp b/apmanager.gyp
index 755e63f..4ce5251 100644
--- a/apmanager.gyp
+++ b/apmanager.gyp
@@ -84,6 +84,7 @@
         'device_info.cc',
         'dhcp_server.cc',
         'dhcp_server_factory.cc',
+        'error.cc',
         'event_dispatcher.cc',
         'file_writer.cc',
         'firewall_manager.cc',
@@ -145,6 +146,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',