Do not retry forever in DataConnection.

When we are initially to connect we limit the the number of
retries so as to go through the list of waiting apns. But if retry
forever is enabled, as it is with Verizon devices, we can burn the
battery down quickly because we're retrying with short initial
timeouts.

In this change I also increase the timeout between apn retries from
5 seconds to 20 seconds to further reduce battery drain when retrying.
And added a retry with a longer timeout if to keep the contract with
ConnectivityService that when enabled we will continue to retry.

Bug: 9240744
Change-Id: I45b9ec5300d602d838dbdeacdbd1fca0c4d65ee3
Fail on permanent errors in DcTracker.

This reverts the retry added when fixing bug 9240744:

  https://googleplex-android-review.git.corp.google.com/#/c/315817/2


Bug: 9373372
Change-Id: I15d8dcc2c04174d54dd33f8a34813fd72764fc77
Add CMD_SET_ENABLE_FAIL_FAST_MOBILE_DATA to DcTracker.

To fail fast we turn off data stall detection and do no retires.

Bug: 9279964
Change-Id: I42c326a21e05aa301e9d974ed9ac1d59472780ec
Don't set gsm.sim.operator.numeric to null

Bug: 9628781
Change-Id: I80c00584535a327f9e93c8bd0980178781cae6ff
Merge "Add CMD_SET_ENABLE_FAIL_FAST_MOBILE_DATA to DcTracker." into jb-mr2-dev
Allow GSMPhone#getCellLocation to report LTE location information

Bug: 9228974
Change-Id: I7e9b190aa67968f1f2b2b567614c35c5dd5d78fa
Only show "Emergency calls only" if a GSM device is voice capable.

This fix uses the config_voice_capable compile time switch to be
sure GsmServiceStateTracker.mEmergencyOnly is false if the device
isn't voice capable. Thus GsmServiceStateTracker.updateSpnDisplay
will not send the SPN_STRINGS_UPDATED_ACTION intent with
emergency_calls_only as the PLMN. Instead, it will aways be the
string defined by the lockscreen_carrier_default, typically
"No service".

Bug: 9422921
Change-Id: I74e89c4a29d0d8e3d5cc1726adedb0c2634cf257
DataConnection should not retry permanent errors.

Update DcFailCause with the "no retry" info from ril.h

Bug: 9040015
Change-Id: Ib94af9996c79800322251a45349b117e1f913269
Restart, cleanup or retry inactve connections.

Instead of retrying all inactive connections, restart radio on very bad
errors, clean those that are permanent failures and retry
the others.

Bug: 10131736
Change-Id: I2527b18d6cda52c55fb94be58fbb1a7a86818ef9
Add mEnableFailFastRefCounter.

Use a reference counter to control enabling fail fast
as there are now two entities which control failing fast:
ConnectifityService.checkProvisioningUrl and
MobileDataStateTracker.captivePortalCheckComplete.

Bug: 9462512
Change-Id: I0dea0eee519f8ee7f94e79d40e82c18f30d7fe2e
Make EnableFailFastRefCounter a singleton.

Since there is only one DCT the mEnableFailFastRefCounter can be a
static/singleton and thus properly refcount the
CMD_SET_ENABLE_FAIL_FAST_MOBILE_DATA. There is still one problem
and that is if the PhoneApp crashes the singleton will be reinstantiated
and we'll have the same problem, but the frequency of this is small.
Also, the consequence of this is the DCT will be behaving "normally"
in that it will be attempting to do data-stall recovery although we
might like it not to it is the "normal" behavior.

Bug: 10304904
Change-Id: I4197c4236a402aa247f775e480e747620fd189bd
Add support for a provisioning apn.

When there is a provisioning apn, such as lwaactivate from AT&T it is
not necessary nor desireble to try to make network connections as
they will be no TCP ACK's to SYN messages, except for a limited set
of operator white listed addresses.

This is implemented by adding two commands CMD_IS_PRVISIONING_APN
and CMD_ENABLE_MOBILE_PROVISIONING. These are used by ConnectivityService
CheckMp and to know when we are connected to a provisioning apn and to
turn actually bring up the connection when the user needs to provision.

Also, incorporate the sEnableFailFastRefCounter change from klp to make
a singleton and remove the RuntimeException.

Bug: 10328264
Change-Id: I3925004011bb1243793c4c1b963d923dc2b00cb5
Merge remote-tracking branch 'upstream/jb43' into jb43

Conflicts:
	src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java