AFU implementations must indicate which top-level interface they expect.
The afu_platform_config script matches a platform to the expected AFU
interface.  AFUs demand a particular top-level interface either by passing
the interface name to afu_platform_config's --ifc argument or by encoding
the interface name in the AFU's packager JSON database.  The JSON option
offers more control, since top-level interface parameters can be modified.

The interface encoding in JSON is in the afu-image:afu-top-interface:name
field:

{
   ...
   "afu-image": {
      ...
      "interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
      ...
      "afu-top-interface":
         {
            "name": "ccip_std_afu"
         }
   }
}


In addition to the name, some module-arguments parameters may be
overridden in the AFU JSON database.  For example, the following makes
local memory optional:

{
   ...
   "afu-image": {
      ...
      "interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
      ...
      "afu-top-interface":
         {
            "name": "ccip_std_afu_avalon_mm",
            "module-arguments" :
               [
                  {
                     "class": "local-memory",
                     "optional": true
                  }
               ]
         }
   }
}

Using preprocessor variables generated by afu_platform_config, an AFU
declaring local memory optional must be prepared to compile correctly
whether or not local memory is available.

Other module-arguments requirements may also be modified here, including
default-entries, max-entries and min-entries.
