Add some type checking of configs
Add some type checking of configs

Before, the types were not checked and just expected. The old behavior
would cause lots of tracebacks, or, much worse, convert things like:
```
{
     "target_overrides": {
        "*": {
		"target.macros_add": "CONFIG_GPIO_AS_PINRESET"
        }
     }
}
```
into a definition of each of the letters as macros that expand to
nothing, causing massive compilation problems.

I resolved this by adding some type checking to the config data. Now
there is a type check for most of the fields within a library and
application configurations.

netzimme/mbed-os,betzw/mbed-os,svogl/mbed-os,kl-cruz/mbed-os,mikaleppanen/mbed-os,bcostm/mbed-os,catiedev/mbed-os,fahhem/mbed-os,andcor02/mbed-os,YarivCol/mbed-os,betzw/mbed-os,svogl/mbed-os,mazimkhan/mbed-os,Archcady/mbed-os,Archcady/mbed-os,mazimkhan/mbed-os,karsev/mbed-os,andcor02/mbed-os,Archcady/mbed-os,CalSol/mbed,CalSol/mbed,mmorenobarm/mbed-os,andcor02/mbed-os,NXPmicro/mbed,YarivCol/mbed-os,screamerbg/mbed,arostm/mbed-os,pradeep-gr/mbed-os5-onsemi,HeadsUpDisplayInc/mbed,CalSol/mbed,screamerbg/mbed,mmorenobarm/mbed-os,CalSol/mbed,kjbracey-arm/mbed,cvtsi2sd/mbed-os,bulislaw/mbed-os,fanghuaqi/mbed,pradeep-gr/mbed-os5-onsemi,fahhem/mbed-os,fahhem/mbed-os,catiedev/mbed-os,kl-cruz/mbed-os,netzimme/mbed-os,monkiineko/mbed-os,infinnovation/mbed-os,c1728p9/mbed-os,NXPmicro/mbed,arostm/mbed-os,fahhem/mbed-os,pradeep-gr/mbed-os5-onsemi,NXPmicro/mbed,nRFMesh/mbed-os,karsev/mbed-os,cvtsi2sd/mbed-os,mbedmicro/mbed,cvtsi2sd/mbed-os,Archcady/mbed-os,infinnovation/mbed-os,netzimme/mbed-os,bulislaw/mbed-os,NXPmicro/mbed,kl-cruz/mbed-os,fanghuaqi/mbed,YarivCol/mbed-os,adamgreen/mbed,mbedmicro/mbed,kl-cruz/mbed-os,mazimkhan/mbed-os,ryankurte/mbed-os,kjbracey-arm/mbed,screamerbg/mbed,fanghuaqi/mbed,infinnovation/mbed-os,screamerbg/mbed,bcostm/mbed-os,nRFMesh/mbed-os,c1728p9/mbed-os,fahhem/mbed-os,HeadsUpDisplayInc/mbed,mbedmicro/mbed,mikaleppanen/mbed-os,mikaleppanen/mbed-os,bcostm/mbed-os,pradeep-gr/mbed-os5-onsemi,catiedev/mbed-os,netzimme/mbed-os,bulislaw/mbed-os,cvtsi2sd/mbed-os,betzw/mbed-os,svogl/mbed-os,bulislaw/mbed-os,fanghuaqi/mbed,svogl/mbed-os,mmorenobarm/mbed-os,monkiineko/mbed-os,karsev/mbed-os,ryankurte/mbed-os,CalSol/mbed,andcor02/mbed-os,arostm/mbed-os,kl-cruz/mbed-os,adamgreen/mbed,mikaleppanen/mbed-os,nRFMesh/mbed-os,nRFMesh/mbed-os,NXPmicro/mbed,fahhem/mbed-os,monkiineko/mbed-os,fanghuaqi/mbed,adamgreen/mbed,nRFMesh/mbed-os,CalSol/mbed,karsev/mbed-os,screamerbg/mbed,karsev/mbed-os,c1728p9/mbed-os,bcostm/mbed-os,screamerbg/mbed,HeadsUpDisplayInc/mbed,ryankurte/mbed-os,catiedev/mbed-os,bcostm/mbed-os,mmorenobarm/mbed-os,karsev/mbed-os,bulislaw/mbed-os,mazimkhan/mbed-os,mazimkhan/mbed-os,kl-cruz/mbed-os,ryankurte/mbed-os,pradeep-gr/mbed-os5-onsemi,mbedmicro/mbed,betzw/mbed-os,netzimme/mbed-os,mmorenobarm/mbed-os,YarivCol/mbed-os,betzw/mbed-os,nRFMesh/mbed-os,infinnovation/mbed-os,kjbracey-arm/mbed,svogl/mbed-os,arostm/mbed-os,adamgreen/mbed,cvtsi2sd/mbed-os,Archcady/mbed-os,YarivCol/mbed-os,monkiineko/mbed-os,monkiineko/mbed-os,infinnovation/mbed-os,monkiineko/mbed-os,bcostm/mbed-os,c1728p9/mbed-os,pradeep-gr/mbed-os5-onsemi,adamgreen/mbed,catiedev/mbed-os,catiedev/mbed-os,netzimme/mbed-os,andcor02/mbed-os,HeadsUpDisplayInc/mbed,NXPmicro/mbed,ryankurte/mbed-os,HeadsUpDisplayInc/mbed,svogl/mbed-os,HeadsUpDisplayInc/mbed,cvtsi2sd/mbed-os,infinnovation/mbed-os,ryankurte/mbed-os,mazimkhan/mbed-os,mikaleppanen/mbed-os,c1728p9/mbed-os,mbedmicro/mbed,kjbracey-arm/mbed,c1728p9/mbed-os,YarivCol/mbed-os,andcor02/mbed-os,adamgreen/mbed,arostm/mbed-os,bulislaw/mbed-os,arostm/mbed-os,betzw/mbed-os,Archcady/mbed-os,mikaleppanen/mbed-os,mmorenobarm/mbed-os