[libqofono] Added base classes for modem interfaces

QOfonoModemInterface and QOfonoModemInterface2 classes implement common
patterns for QOfono classes that represent modem interfaces with or without
properties, respectively. That includes waiting for the interface to appear
in the modem interface list, requesting initial properties, getting and
setting properties of various types. And it's all asynchronous.

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

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