Support decentralized definition of the dispatch table

Opening this early for discussion as usual. This branch will allow chains and actions to register themselves with some sort of mutable registry, which then gets used to construct the dispatch table. This will make it possible to avoid huge, centralized blocks of code, registering every chain an application will expose.