Add RemoteInput, Grouping, and Extender to Notification api.

RemoteInputs annotate actions and content intents to request
input from the user as part of an intent being sent. Results
are sent along using ClipData to avoid unparcel of developer
provided bundle values. A helper method is expexted to be used
to extract results.

Grouping allows notifications to be bundled together, with an optional
summary notification for display on older platforms. SortKey is an
important part of grouping since child notifications will likely have
a prescribed ordering. It is also useful in top level notifications
for apps that want to provide an ordering all other fields being equal.

Also provide a fluid way to to extend Actions and Notifications
using Extenders, e.g.:

Notification n = new NotificationCompat.Builder(context)
    .setOption1()
    .apply(new SomeExtender()
        .setOption2())
    .build();

This helps extension libraries provide a nice API experience for devs.

Change-Id: Ib3438ef854772c2c34d21bf1eb4ed7c9e032106f
3 files changed