investigation.py: run full matching engine
Change Builder methods - return list of templates

1. Refactor the MasterTemplateBuilder methods which return a
ListingMatcherTemplate to rather return a list of templates. This will
allow some methods to return an empty list to cause that template to be
skipped.
2. This might be useful later to support both an "exact text" and
"regex" listing matcher template from a single method.
3. Modify the "match_family_and_model_separately_with_regex" method to
return an empty list if:
a. family is empty
b. model has no alphabetic characters
(e.g. only digits, such as family=DigiLux, model = 5 )
c. model has no digits
(e.g. only alphabetic, such as family=Digilux, model=Zoom)
Unit tests to match family and model separately