Clean visual style: move to Light, add Material support, change Drawables (progress, icons).

This code alters the visual style moving the APP to a Light theme.
Parents of the theme are either Theme.Holo.Light or Theme.Material.Light
depending on which API we start the APK from. Needs SDK 21 to build.

Other than the visual changes, this commit changes:
 - name of the APP to 'Browser'
 - animations and sequencing of the Tab switcher in {nav/anim}_screen
 - removal of the warning icon from the Exit dialog
 - change of the favicon appearance (removal of the double border)

Vast amount of unused resources are removed from the APK. Just XHDPI
drawables have been synthesized for now, and the Primary color was
used for the icons and is accessible in R.color.Primary.

Change-Id: If75cc051c5d4015383e96066cdb6507484e625d8
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 84330c1..0d16b59 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -21,6 +21,7 @@
 
 import org.codeaurora.swe.GeolocationPermissions;
 import org.codeaurora.swe.WebView;
+import org.codeaurora.swe.util.Observable;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -56,6 +57,8 @@
 
     private OnThumbnailUpdatedListener mOnThumbnailUpdatedListener;
 
+    private Observable mTabCountObservable;
+
     /**
      * Construct a new TabControl object
      */
@@ -64,12 +67,18 @@
         mMaxTabs = mController.getMaxTabs();
         mTabs = new ArrayList<Tab>(mMaxTabs);
         mTabQueue = new ArrayList<Tab>(mMaxTabs);
+        mTabCountObservable = new Observable();
+        mTabCountObservable.set(0);
     }
 
     synchronized static long getNextId() {
         return sNextId++;
     }
 
+    Observable getTabCountObservable() {
+        return mTabCountObservable;
+    }
+
     /**
      * Return the current tab's main WebView. This will always return the main
      * WebView for a given tab and not a subwindow.
@@ -181,6 +190,7 @@
             }
         }
         mTabs.add(tab);
+        mTabCountObservable.set(mTabs.size());
         tab.setController(mController);
         mController.onSetWebView(tab, tab.getWebView());
         tab.putInBackground();
@@ -207,6 +217,7 @@
         // Create a new tab and add it to the tab list
         Tab t = new Tab(mController, w, state);
         mTabs.add(t);
+        mTabCountObservable.set(mTabs.size());
         if (privateBrowsing) {
             mNumIncognito += 1;
         }
@@ -226,6 +237,7 @@
     SnapshotTab createSnapshotTab(long snapshotId) {
         SnapshotTab t = new SnapshotTab(mController, snapshotId);
         mTabs.add(t);
+        mTabCountObservable.set(mTabs.size());
         return t;
     }
 
@@ -253,6 +265,7 @@
 
         // Remove t from our list of tabs.
         mTabs.remove(t);
+        mTabCountObservable.set(mTabs.size());
 
         //Clear incognito geolocation state if this is the last incognito tab.
         if (t.isPrivateBrowsingEnabled()) {
@@ -435,6 +448,7 @@
                 Tab t = new Tab(mController, state);
                 tabMap.put(id, t);
                 mTabs.add(t);
+                mTabCountObservable.set(mTabs.size());
                 // added the tab to the front as they are not current
                 mTabQueue.add(0, t);
             }