make building handlers from json more generic

Problem: version-handler, a new feature that will be added to this
repository will also parse json files from the same directory ipmi-flash
does. Currently buildjson is a mix of some code that can be reused and
other code that is pretty specific to firmware updates; this makes it
hard to reuse the code.

Solution: factor out the generic parts and place it in bmc and then
leave the specific parts in firmware-handler. Also code changes have
been made to buildjson: wrap functions in a templated class that leaves
feature specific parsing as a pure virtual method.

Tested:
Ran the unit tests, which do test the parsing functionality.

Signed-off-by: Jason Ling <jasonling@google.com>
Change-Id: I021dc829a82d1719b4cb862cdfb224eca629a44d
diff --git a/bmc/Makefile.am b/bmc/Makefile.am
index 4592bbd..3bccc41 100644
--- a/bmc/Makefile.am
+++ b/bmc/Makefile.am
@@ -3,6 +3,7 @@
 
 # shared functionality between firmware and version blob handlers
 libbmc_common_la_SOURCES = \
+	buildjson.cpp \
 	file_handler.cpp \
 	fs.cpp \
 	general_systemd.cpp \