Bug 939046 - Part 1: replace apnSettings with apnContexts map.

Since we are going have one RILNetworkInterface per type, we will not
need the byApn/byType in apnSettings. Instead we introduce the apnContexts
map. The key of the map is the apn type and the value is its ApnContext object.
ApnContext is composed of 'apnSetting', 'iface' (RILNetworkInterface), and
'enabled'.

So after this patch, each apn type will have its own RILNetworkInterface.
We will handle data call sharing in the upcoming patches.
Bug 939046 - Part 2: add apnType property to RILNetworkInterface.

Since each apn type corresponds to one RILNetworkInterface now, we add
'apnType' property in RILNetworkInterface.
Bug 939046 - Part 3: introduce DataCall.

Introduce DataCall object which represents a real underlying PDP.
DataCall has 'apnProfile' and 'linkInfo' porperties. 'apnProfile'
contains
all necessary information to setup a data call, and 'linkInfo'
contains the link information after the data call has been established
succesfully.
Each RILNetworkInterface will have reference to a DataCall, when it's
enabled.
Bug 939046 - Part 4: share DataCall among RILNetworkInterfaces.

When an apn type is enabled, search for existent DataCalls in all
RILNetworkInterfaces, if an existent DataCall can handle the current
apn type, reuse that DataCall, otherwise create a new DataCall.