new allocation-minimizing bitmap decoder

Use a new image decoding and caching framework. This one maximizes
bitmap reuse by decoding into fixed-sized Bitmaps and relying on
BitmapRegionDecoder to only decode a desired region. The ultimate goal
is to allocate memory less often, as each large allocation triggers
GC jank.

The overall request/response abstraction and threading model are now
cleaner, and caching is no longer a required fixture. Multi-core
decoding is now supported, with a currently fixed thread pool size of 4.

Attachment images are the only client for now, but contact photos will
switch to this framework next.

Bug: 9566006
Change-Id: I7c437941fd984cc0038da8f0ffd1df1a9ced4dd3
diff --git a/res/values/constants.xml b/res/values/constants.xml
index f0c15b5..68f9286 100644
--- a/res/values/constants.xml
+++ b/res/values/constants.xml
@@ -120,7 +120,7 @@
     <!-- Duration of fade in/out animation for attachment previews -->
     <integer name="ap_fade_animation_duration">500</integer>
     <!-- Duration of placeholder pulse animation for attachment previews -->
-    <integer name="ap_placeholder_animation_duration">2000</integer>
+    <integer name="ap_placeholder_animation_duration">1000</integer>
     <!-- Delay before showing progress bar animations for attachment previews that are loading -->
     <integer name="ap_progress_animation_delay">2000</integer>
     <!-- Max overflow count to show for attachment previews -->