File-based dictionaries with caching.

Created file dictionaries of words (maximum 1000 words to keep file sizes down) for data sources. 
Files have the advantage of being more transparent to users. Also, files make it easy for users to customize the values with localized, or alternative, words.
The code looks for a file first, then the embedded resource, then caches the data for subsequent lookups.
Data sourced from briandunning.com (Aus/US/UK person address data) and mockaroo.com (with permission). The data requires some curation and discussion about what we want to include. Currently, there are completed data sources/equivalence classes for Geographic and Person data, but there are a number of other dictionaries included in the PR. 
I'm going with the idea that all file-based dictionaries are strings for the moment. I didn't want to over engineer it and am taking the approach that we can re-visit the design if a new use case requires it. I have made the base DataSource<T> generic, but at this stage I would expect DataSource<DateTime> or DataSource<int> values being generated programmatically rather than reading from a file like these ones. That is also why I have adopted the terms "words" and "dictionaries" to emphasise that these are string-based.
I think internal for the time being, as discussed last time. Sorry, making things public is muscle memory! :-)