Add Promises and a PromiseCommandMap - to simplify signal-command race-conditions across dependent configs.

For example, an interface is met by two concrete implementations, one synchronous and one asynchronous. A promise is defined and injected into the implementations, which is fired. A derivative config during configure() would miss the synchronous callback if a signal was defined, but a promise stores the dispatched data and dispatches it when the derivative config catches up.