voicecall: Take notice of SIM removal

In case the SIM atom was destroyed and then re-created, the voicecall
atom crashed because it had an old sim_context structure. This fix adds
a callback that is called from the SIM atom so we know when it is
destroyed.
rilmodem: Enter PIN before unlocking it

We enter the SIM PIN in case it has not been entered yet when unlocking
the PIN. This homogenizes the unlock feature for different modems, as
in some cases the modem firmware already enters the PIN before
unlocking but in other cases it does not.
Merge pull request #127 from alfonsosanchezbeato/enter-pin-on-unlock

Enter PIN before unlocking it
Merge pull request #125 from alfonsosanchezbeato/fix-off-on-crash

voicecall: Take notice of SIM removal
mtkmodem: Return slot when parsing 3G caps reply

Previously we were returning a boolean, but now we need the slot number
to be able to know the physical slot the UNIX socket controls.
mtkmodem: Add set 3G request

This request sets the current 3G slot, and makes the other slot 2G.
mtkmodem: Adapt to change in 3G caps parsing
include: Add function to set 3G caps for the modem
src: Add function to set 3G caps for the modem
doc: Add function to set 3G caps for the modem
test: Add script to control 3G caps
mtk: Consider 3G caps on modem creation

The rild sockets do not always control the same physical slot: it can
change depending on the slot that owns the 3G capabilities at a given
time. /dev/socket/rild always controls the 3G slot, while
/dev/socket/rild2 controls the other one. As we want to keep the
association between physical slots 0/1 and object paths /ril_0/1, now
we check the 3G capabilities so we know the physical slot that we
control with a given socket, and we associate the right modem path
with that socket. Having just one slot is also considered so things
work also in that case.
rilmodem: Handle GSM_WCDMA_AUTO rat mode

Handle GSM_WCDMA_AUTO mode, which is returned by MTK modems as factory
default.