[libqofono] Added bases classes for modem interfaces

QOfonoModemInterface and QOfonoModemInterface2 classes implements common
patterns for QOfono classes that represent modem interfaces with or without
properties, respectively. Pattern include waiting for interface to appear
in the modem interface list, requesting initial properties, getting and
setting properties of various types. And it's all being done asynchronously.

In addition to eliminating a few blocking calls, this allows to get rid of
significant amount of duplicate code and make the behavior of the different
modem interface objects consistent with each other.

Doesn't touch the public API but completely breaks ABI.