New APN database

## apntool
* Imports Google-provided apns xml file (found in Android and Hangouts app)
* Creates a gzipped easily-queried, legacy-friendly SQLite database
* `./gradlew -q updateApnDatabase` to re-run and copy over the new asset

## ApnDatabase
* Use SQLiteAssetHelper to gunzip from assets and version control the database
    * DB version is set to Google's xml file version for easily tracking when we need to update
* Lookup MMSC info with the following priorities:
    1. Try to get relevant MCC+MNC from multiple places in order of probability of it being correct
    2. If MCC+MNC was available, also try to get APN name via the MMS `NetworkInfo`'s `extraInfo` string.
    3. If no matching MMSCs were found including APN name, try without the APN (old behavior)
A combination of Android documentation and StackOverflow questions.

getSimOperator() is the most accurate provider of mccmnc, but will only return a valid value when the sim is in ready state according to Android docs.

getNetworkOperator() is unreliable for CDMA networks according to the Android docs, so it is not used in that case.

Configuration.mcc and mnc are stored as integers, which is a terrible choice as mncs will often have leading zeros that can't be discerned. That makes choosing from Configuration the last choice as a fallback, since it will often contain correct information anyway and it's better than nothing.