Bug and Fix in CCDrawNode When CC_ENABLE_CACHE_TEXTURE_DATA is Enabled

This code in DrawNode::init() causes DrawNode to be reinitialized exponentially more times when the application is paused and then resumed:

#if CC_ENABLE_CACHE_TEXTURE_DATA
    // Need to listen the event only when not use batchnode, because it will use VBO
    auto listener = EventListenerCustom::create(EVENT_RENDERER_RECREATED, [this](EventCustom* event){
   /** listen the event that renderer was recreated on Android/WP8 */
        this->init();
    });

    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
#endif

The first time the program is resumed, init() is called once. The second time, it is called twice, then four times, then eight times, etc.

One solution is to register the EVENT_RENDERER_RECREATED event listener only once: the first time that init() is called.

This problem was observed in version 3.8.1.