Reuse hidden views if asked for

If a LayoutManager tries to get a view that is in the
hidden list, Recycler used to recycle it so that it
can be safely rebound as a new item.

This approach, although safe, creates UI glitches
as item jumps from a location to another instantly.
To overcome this issue, now Recycler unhides such
views and moves them to scrap. It also reports it
to the item animator with necessary flags so that
its appearance can properly be evaluated as a
persistence (or change).

Bug: 24176126

Change-Id: I9858abdd6faf859bdc2ee2a9d2a88228c21fa9b1
7 files changed