KeyValue Parser: Split out the data array parsing

Split out the data array parsing. This allows is to be called again,
with differing sets of regexKeys, to parse additional data (eg. when
additional calls are required)
Merge remote-tracking branch 'origin/new_templates'