Refactored precise data connection state

Instead of triggering the data connection state changed
event from outside, now the event is triggering from
DataConnection. Whenever detecting data connection
state changes, the event will be triggered. This significantly
reduced the unnecessary redundant events sent to telephony registry,
even though it has a duplicate detection mechanism.

This are also two behavioral changes.

1. Previously if a data connection supports multiple APN types,
there will be multiple data connection state changed event for
each APN type. Now there is only one. The listener should use
PreciseDataConnectionState.getApnSetting().getApnTypeBitmask()
to check which APN types this data connection supports.

2. If setup data call fails before a data connection instance
can be created, there won't be any event with fail cause.

Fix: 161572838
Test: FrameworksTelephonyTests and manual
Merged-In: I9723d5284c2a8fbae9f63179dc30ddc42da1d0fc
Change-Id: I9723d5284c2a8fbae9f63179dc30ddc42da1d0fc
(cherry picked from commit 34a09a4cbd2fbb32d0dd7b8879483b879125bf52)
4 files changed