RecyclerView Gesture/Band selection support.

Migrating code developed in DocumentsUI to support lib.
APIs-hidden, until ready for API review.
Update band code to use ItemDecoration instead of getOverlay.
Reduce visibility or @hide methods not useful to clients.
Add support for parameterized key type + default supoprt for native RV stable ids.
Gracefully degrade features when using native stable ids: no band, no range support.

Provides a new selection demo app with touch and band (stylus/mouse) support.
Break demo app into two apps. One using native RV stable ids, one using content uris as the key.
    The demo using content URIs supports band and range selection.

Recording of demo app: https://drive.google.com/open?id=0B1OqiAcKh66ZTHJhU0xSa1lobmM

Bug: 64847011
Change-Id: I89c10450a61e993b5a169823b28718242bdd7243
Test: Includes unit tests for new code. Yoda, "Very fast they run!"
diff --git a/settings.gradle b/settings.gradle
index 390ec8d..95f5b06 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -40,6 +40,9 @@
 include ':recyclerview-v7'
 project(':recyclerview-v7').projectDir = new File(rootDir, 'v7/recyclerview')
 
+include ':recyclerview-selection'
+project(':recyclerview-selection').projectDir = new File(rootDir, 'recyclerview-selection')
+
 include ':cardview-v7'
 project(':cardview-v7').projectDir = new File(rootDir, 'v7/cardview')