Split sources, partial inflation, third-party support.

This change splits HardCodedSources into separate classes
so they could borrow helpers from fallback.  This also
finishes up FallbackSource so it handles all new types
supported by ContactsContract.  The view inflaters now
handle showing all types, even if not supported as a choice
during edit.  This approach also allows us to partially
inflate sources, speeding up view and FastTrack.  Fixes
http://b/2116999 and http://b/2126675 and makes progress
towards fixing http://b/2134623

This change also fixes on-phone contacts, meaning we
always have fallback sources, fixing http://b/2119637 and
http://b/2123401

Repurpose code from StyleManager for Sources inflation of
third-party data sources, fixing http://b/2126691

Fix FastTrack chicklet bug so we uncheck when switching
between tabs.  Since all types are in framework, we borrow
those strings here, and also clean up our descriptions for
translation.
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index dea0bad..13a17c1 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -339,17 +339,7 @@
     public static View createTabIndicatorView(ViewGroup parent, ContactsSource source) {
         Drawable icon = null;
         if (source != null) {
-            final String packageName = source.resPackageName;
-            if (source.iconRes > 0) {
-                try {
-                    final Context authContext = parent.getContext().
-                            createPackageContext(packageName, 0);
-                    icon = authContext.getResources().getDrawable(source.iconRes);
-
-                } catch (PackageManager.NameNotFoundException e) {
-                    Log.d(TAG, "error getting the Package Context for " + packageName, e);
-                }
-            }
+            icon = source.getDisplayIcon(parent.getContext());
         }
         return createTabIndicatorView(parent, null, icon);
     }