Refactoring to keep it DRY

- Created `Base` & `base.factory()` for `Observable` abstraction
- Refactored `DataGrid`, `DataList`, `DataListFilter`, & `DataStore` to extend `Base`