Further seperation of public templates vs private templates
Created by: chuckatkins
@williamfgc This creates a further distinction between public and private template implementations. The only implementation that actually needs to be public is that for compound variables. All others are just used to instantiate instances for the known types that we use.