Add a Layer to the cortex.

        Notes:

            The addLayer ``**info`` arg is expected to be shaped like the following::

                info = {
                    'iden': <str>, ( optional iden. default guid() )
                    'type': <str>, ( optional type. default lmdb )
                    'owner': <str>, ( optional owner. default root )
                    'config': {}, # type specific config options.
                }

async def addLayer(self, **info):
        '''
        Add a Layer to the cortex.

        Notes:

            The addLayer ``**info`` arg is expected to be shaped like the following::

                info = {
                    'iden': <str>, ( optional iden. default guid() )
                    'type': <str>, ( optional type. default lmdb )
                    'owner': <str>, ( optional owner. default root )
                    'config': {}, # type specific config options.
                }

        '''
        iden = info.pop('iden', None)
        if iden is None:
            iden = s_common.guid()

        node = await self.hive.open(('cortex', 'layers', iden))

        layrinfo = await node.dict()
        layrconf = await (await node.open(('config',))).dict()

        await layrinfo.set('type', info.get('type', 'lmdb'))
        await layrinfo.set('owner', info.get('owner', 'root'))
        await layrinfo.set('name', info.get('name', '??'))

        for name, valu in info.get('config', {}).items():
            await layrconf.set(name, valu)

        return await self._layrFromNode(node)