Simplified handling of keys

We were previously tracking the keys of list items separately from the list items, even though every list item could track its own key. This pull request removes that separate tracking and allows each item to track its own key. This slightly simplifies the creation of list adapters and generally results in cleaner code.