Settings: Improve QS tiles config code

Tile configuration has some unusual coding, like having a
public static Map (QuickSettingsUtil.TILES) to hold all
tile information.

That map is modified directly during the execution of
QuickSettings.onCreate(), which removes unavailable tiles
from this global map. Once those tiles are removed, they
are gone for good (until the runtime decides that it must
reinitialize QuickSettingsUtil.TILES).

This patch tweaks this process a bit:
 - The global TILES variable is now immutable.
 - There is a distiction from disabling and removing a tile
   - Removed tiles are those related to the device
     capabilities, and can never be enabled, once removed.
   - Disabled tiles are those related to the device state,
     like the ProfileTile, which is unavailable if the user
     has disabled the profile feature. Disabled tiles can
     be re-enabled later.
 - All code that actually removes/disables tiles is now at
   QuickSettingsUtil. The results of such operations are
   reflected on the TILES immutable view.
 - It is possible to enable tiles that have been disabled.

This changes improve [citation needed] coding style a bit,
but, furthermore, allows one to disable and reenable tiles
when needed be. For instance, enabling Profiles or Expanded
Desktop will cause the corresponding tile to be available
for selection immediately. That would not possible to
accomplish, once those tiles were removed from the available
TILES map.

Patch set 2: Rebased
Patch set 3: Rebase, refactor
Patch set 4: Check network tile availability at every resume
Patch set 5: Sort tiles at the adapter, revoke caveats
Patch set 6: Some cleanup

Change-Id: I4ec35d7f2eca2fbdc770d75c1529a83f9c2af9da
Author: ThiagoVinicius
Miss changes in: "Settings: Improve QS tiles config code"

Change-Id: I86f0312aea8003475d8cfeeabe579de45855d818
Merge "Let accessibility feature instructions scroll." into cm-10.1

Change-Id: I55d823fef1a9b1c57e08f42cf143a3b5fd70b2e9
Merge "Update German translation." into cm-10.1

Change-Id: Idd5a416301dabb6dd70a448f5badf8b1129802f0
Merge "Settings: Specify notification types for QS quick pulldown check (2/2)" into jb4.2

Change-Id: I025c910111f675d7dde570e7d204136f144161f7
Settings: Specify notification types for Auto Hide statusbar (2/2)

Allows users to choose between "non-permanent only" and "all notifications" in the autohide
the statusbar when there are no notifications check.

- cleanup a bit
- reduce method and provider settings call

Change-Id: I0ac011588edc008afececfb7ca0f48dd4822cacc
Settings: PT-BR translations

Change-Id: I0e1b4d9f2d1002d63da74129b766528a9d45ecf6