manager: refactor interface templates

Many of the templates in manager.hpp are _almost_ testable.  Enable
testing by porting to a new header - interface_ops.hpp - to be activated
later.

Enhancements include:

  Dropped 'PropertiesVariant' wrapper template for reduced comprehensional
  complexity.

  More intuitive HasProperties implementation.  HasProperties is a type
  traits template that simply checks for the presence of a nested
  PropertiesVariant typename.  These are provided by sdbusplus generated
  server bindings for dbus interfaces that have properties.

  Standalone templates for make, assign, serialize and deserialize
  interface.  There was no good reason to couple these, and the
  resulting types and method names are more intuitive.

  Templated serialize/deserialize operations so the dependency on
  cereal can be abstracted away.

Change-Id: Ia449628eeaa9732bbbc51b0609bd449f43ebcb7c
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/test/Makefile.am b/test/Makefile.am
index 777f11b..f213b4f 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -27,6 +27,12 @@
 serialize_test_LDFLAGS = ${OESDK_TESTCASE_FLAGS}
 check_PROGRAMS += serialize-test
 
+interface_ops_test_SOURCES = interface_ops_test.cpp
+interface_ops_test_CFLAGS = ${GTEST_CFLAGS} ${GMOCK_CFLAGS}
+interface_ops_test_LDADD = ${GTEST_LIBS} ${GMOCK_LIBS}
+interface_ops_test_LDFLAGS = ${OESDK_TESTCASE_FLAGS}
+check_PROGRAMS += interface-ops-test
+
 extra_yamldir=$(top_srcdir)/example/extra_interfaces.d
 
 phosphor_inventory_test_SOURCES = test.cpp