FP16 support in serialization

* Allow serialization of fp16 data
* Add package to support integrated half data-type (half_float::half), independent of native float: http://half.sourceforge.net/
* Allow passing of accumulate data-type in serialization

Signed-off-by: James Ward <james.ward@arm.com>
Change-Id: I54357f02e3776d81958228f699ea5044f2014f4b
diff --git a/include/attribute.def b/include/attribute.def
index b40a77b..ebbf024 100644
--- a/include/attribute.def
+++ b/include/attribute.def
@@ -26,26 +26,29 @@
     ...: variadic variables for more arguments, depending on NUM_ARGS_IN_ATTRIBUTES
 */
 
-DEF_ATTRIBUTE(Pool, 5,
+DEF_ATTRIBUTE(Pool, 6,
               int32_t, V, pad,
               int32_t, V, kernel,
               int32_t, V, stride,
               int32_t, S, input_zp,
-              int32_t, S, output_zp)
+              int32_t, S, output_zp,
+              DType,   S, accum_dtype)
 
-DEF_ATTRIBUTE(Conv, 5,
+DEF_ATTRIBUTE(Conv, 6,
               int32_t, V, pad,
               int32_t, V, stride,
               int32_t, V, dilation,
               int32_t, S, input_zp,
-              int32_t, S, weight_zp)
+              int32_t, S, weight_zp,
+              DType,   S, accum_dtype)
 
-DEF_ATTRIBUTE(TransposeConv, 5,
+DEF_ATTRIBUTE(TransposeConv, 6,
               int32_t, V, out_pad,
               int32_t, V, stride,
               int32_t, V, output_shape,
               int32_t, S, input_zp,
-              int32_t, S, weight_zp)
+              int32_t, S, weight_zp,
+              DType,   S, accum_dtype)
 
 DEF_ATTRIBUTE(Pad, 3,
               int32_t, V, padding,
@@ -106,13 +109,15 @@
 DEF_ATTRIBUTE(Table, 1,
               int16_t, V, table)
 
-DEF_ATTRIBUTE(MatMul, 2,
+DEF_ATTRIBUTE(MatMul, 3,
               int32_t, S, a_zp,
-              int32_t, S, b_zp)
+              int32_t, S, b_zp,
+              DType,   S, accum_dtype)
 
-DEF_ATTRIBUTE(FullyConnected, 2,
+DEF_ATTRIBUTE(FullyConnected, 3,
               int32_t, S, input_zp,
-              int32_t, S, weight_zp)
+              int32_t, S, weight_zp,
+              DType,   S, accum_dtype)
 
 DEF_ATTRIBUTE(Negate, 2,
               int32_t, S, input1_zp,