Exceptions in async callbacks are not handled

@matcelary found, that exceptions in async callbacks are not handled and result in:

terminate called after throwing an instance of 'Tango::DevFailed'

to reproduce:

import time

from tango import ApiUtil, cb_sub_model
from tango.server import Device, attribute
from tango.test_context import DeviceTestContext

api_util = ApiUtil.instance()
api_util.set_asynch_cb_sub_model(cb_sub_model.PUSH_CALLBACK)


class TestDevice(Device):

    @attribute
    def attr(self):
        return 1

def callback(_event):
    raise Exception("Some exception")

if __name__ == '__main__':
    with DeviceTestContext(TestDevice) as proxy:
        proxy.read_attribute_asynch("attr", callback)
        time.sleep(1)
Edited by Yury Matveev