Register engines to individual sources

## Goal

Alter the config API to move engine registration to the individual sources that are configured.  This mean per-source engine configuration.  This means engines (and their options, etc) are "sandboxed" to the sources that register them.

This is important because an engine may need different settings based on the source files it is being run against (for example, which path to import partials relative to).  Plus, not all engines apply to all sources.  Now 3rd-party tools can not only configure their source, but everything needed to compile that source with the relevant settings specific to the 3rd-party tool.

## Implementation

To accomplish this, a source file must first know which source it came from.