Update scanForColors to return an array

This supports reading and returning multiple values, given any block of
text.
Store regexp construction on first use