Bug 939046 - Part 1.a: use network id as key in NetworkManager. f=edgar r=hsinyi,vicamo

Network id is composed of a sub-id + '-' + network type. For mobile network
types, sub-id is 'ril' + service id; for non-mobile network types, sub-id
is always 'device'.
Bug 939046 - Part 1.b: use network id in ril to look for networkInterfaces. r=hsinyi,vicamo
Bug 939046 - Part 2.a: remove routing stuff in register/unregisterNetworkInterface. f=edgar r=hsinyi,vicamo

We should handle routing stuff when a network becomes CONNECTED/DISCONNECTED.
Bug 939046 - Part 2.b: use DISCONNECTED state instead of UNKNOWN when data is disconnected. f=edgar r=hsinyi,vicamo

Since we have removed routing stuff in register/unregisterNetworkInterface()
in Part 2.a, we should use DISCONNECTED state so that routes can be properly
removed when data call is deactivated.
Bug 939046 - Part 3: Introduce dataNetworkInterfaces map and DataCall. f=edgar r=hsinyi

First, we change to use dataNetworkInterfaces map. The key of the map
is the apn type and the value is its corresponding RILNetworkInterface.
RILNetworkInterface(s) are created as soon as apn settings are ready and
registered to NetworkManager right away.

Then, we introduce the DataCall object which represents a real
underlying PDP. When RILNetworkInterface is created, a DataCall is
assigned to it. DataCall can be shared between RILNetworkInterfaces
if they consist of the same apn, username and password.

When a RILNetworkInterface is enabled, it requests its DataCall to
be connected; the DataCall, which can be shared, will establish the
data call if it's not already connected. Similarly, DataCall will
disconnect the data call only when no RILNetworkInterface is requesting
it.

Also, we set the CONNECTING/DISCONNECTING state in DataCall instead of
waiting for state change from ril_worker.
Bug 939046 - Part 4: changes to test cases after data call enhancement. f=edgar r=hsinyi