add "associative" component, for making small sets of key->value pairs

a couple of different components implement an "associative array" of
sorts. Here a new component is created to centralise this logic
use associative for dirvars
use associative for prompt-command