WIP: Virtual Collection Support

This is a WIP PR for adding virtual collection support to Ionic.

Virtual Collections make it easy to manage a large number of items that need to be rendered, but of which only a subset will be visible at any point in time. Imagine a huge list of your favorite songs, or a grid of your photos. We only need to render the items that are in view at any point in time, and nothing else.

This is going to be one of the more complicated features in Ionic, so this PR will be used to track progress, get feedback, and work towards adding a really great virtual collection feature into Ionic.

Here is an initial spec on how this feature might be implemented: https://docs.google.com/a/drifty.com/document/d/1n5dYdDgrBYOENpJECEdgUCfeABfLlbZgQaXHpiGv0to/edit#