An adapter is a factory that produces an app Model. In an effort to normalize data input and
output between Providers, subclasses must pass the data in Map<String, dynamic> format.
A model can be queried by the ModelRepository, and if merited by the ModelRepository implementation,
the Provider. Subclasses may extend Model to include Repository-specific needs,
such as an HTTP endpoint or a table name.
A ModelRepository is the top-level means of relaying data between Models and Providers.
A conventional implementation would adhere to the singleton pattern.
Helper for mono provider systems. This is generally used to simplify code for package examples.
It is discouraged to extend this class for practical applications.