haproxy: generate config as lists instead of using string concat
haproxy: store parsed haproxy configs from each watcher

this allows us to avoid doing complex parsing more than once