refactor class and protocol hierarchy to separate concerns

- Rather than have each concrete datasource implement custom table and collection methods, default implementations have been added in a category.
- Added initial logic for observation.
- Added initial protocol for mutation.
add demo using collection view adapter
refactor fetched section to implement current design