Fix DrawerLayout shadow for RTL mode

This CL has done the following:
1) Keep track of the shadow drawables set for each gravity, and
   resolve the drawable based on the current layout direction and
   drawer gravity on the go
2) For API 21 and above, set a default (non-zero) elevation to the
   drawer for the drawer shadow, instead of using user provided
   shadow drawables, and provide setters and getters for developers
   to change drawer elevation.
3) Add getLayoutDirection and setLayoutDirection in DrawableCompat
4) In the case where an auto-mirrored drawable, change the drawable
   layout direction in the drawable resolution phase.

Bug: 19426883

Change-Id: Ib08e9d4f59ba94cd5618d651a4a4172b66af6570
diff --git a/v4/api/current.txt b/v4/api/current.txt
index 4e8e5f2..3ba7b66 100644
--- a/v4/api/current.txt
+++ b/v4/api/current.txt
@@ -1111,11 +1111,13 @@
 
   public class DrawableCompat {
     ctor public DrawableCompat();
+    method public static int getLayoutDirection(android.graphics.drawable.Drawable);
     method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
     method public static void jumpToCurrentState(android.graphics.drawable.Drawable);
     method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
     method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
     method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
+    method public static void setLayoutDirection(android.graphics.drawable.Drawable, int);
     method public static void setTint(android.graphics.drawable.Drawable, int);
     method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList);
     method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
@@ -2979,6 +2981,7 @@
     method public void closeDrawer(android.view.View);
     method public void closeDrawer(int);
     method public void closeDrawers();
+    method public float getDrawerElevation();
     method public int getDrawerLockMode(int);
     method public int getDrawerLockMode(android.view.View);
     method public java.lang.CharSequence getDrawerTitle(int);
@@ -2991,6 +2994,7 @@
     method protected void onLayout(boolean, int, int, int, int);
     method public void openDrawer(android.view.View);
     method public void openDrawer(int);
+    method public void setDrawerElevation(float);
     method public void setDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener);
     method public void setDrawerLockMode(int);
     method public void setDrawerLockMode(int, int);