Update cpp templates to deserialize complex types from json

Change-Id: If59a1e0f8a9a48355544ffd10eab406dfcb5f20d
CppTemplate: Set methods as virtual, to be implemented by child classes

Change-Id: Icd28f93103e23d3f07e98ba436e84c95ce99ebf3
Model: set MediaObject as abstract

Change-Id: Iafe7c14d47078e47f7a2fafce1bceeaf01d87da0
Minor fixes to model

Change-Id: I047f8e4b2daf36c9d0ef1d3060254558bf05284e
Do not generate Factory objects for abstract classes except for MediaObject

Change-Id: I770886a2fa4e3c64cf6403b6e989af01ef46f7c8