Extracts characteristic async logic.

Executing a block of code for a characteristic given its UUID
has been extracted to WLXCharacteristicAsyncExecutor. This class
is in charge of executing a block of code for a characteristic
in a separate dispatch queue. If the characteristic has not been
discovered, this class uses the service manager to discover the
characteristic and one the characteristic is available the
block of code gets executed.

Also a common structure, used to save handlers/observer of
characteristic, a dictionary of array has been extracted to
WLXDictionaryOfArray.
Adds test case for WLXCharacteristicAsyncExecutor.

Also fixes some bugs found while testing.
Adds WLXCharacteristicLocator

WLXCharacteristicAsyncExecutor no longer depends on
WLXServiceManager, now it depends on some object that implements
the WLXCharacteristicLocator protocol.

This is done to break de cycle dependency between
WLXCharacteristicAsycExecutor and WLXServiceManager and it is
easier for testing.