Generic collection component. Inspired by Backbone's Collections