Template search and update #1929
                
     Merged
            
            
          
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Implements search and updates for templates on the command line.
After a template is invoked, the template search sources are checked for updates to the template pack. For the nuget search source (the only one that this PR implements), the update check is for a newer version of the same nupkg. If a newer version is found, the user is notified, and given the update command (which is an install).
When a template invocation is attempted but there is no matching template, the search sources are checked for a template that matches the user command. If a match is found, the user is informed and given the command necessary to install the template pack.
Also implements the nuget source scraper. This is meant to be run separately from dotnet new, and generates a search info file. The info file is what is actually looked at when search and update checks happen. A version of the scrape file is included in this PR, and should be updated from time to time. But the PR also implements a way to download a newer version of the file automatically from blob storage - which we will cause to be updated. The scraper is not part of the normal operations of running dotnet new, but if could be adapted for users to scrape custom nuget sources.