Support for other data sources

The problem: data may be stored in memory using an application specific representation. It's difficult to get core.logic to interact with this data without duplicating considerable amounts of information with defrel and fact. There are also sync issues because of this.