Implementation for PowerShell/PowerShell-RFC#391. A few implementation decisions:
1. Check the package manager list only once per process (**same as CMD**). So, changing the package manager list in registry doesn't affect a PowerShell session that is already running.
2. When detecting user/system PATH value changes, only check new items PREPENDED or APPENDED to the original string (**same as CMD**). The detection is made simple, which is not intended to detect complex changes to the user/system PATH.
3. The PATH update feature is disabled when the `Environment` provider is not available, or when the current session is restricted.
- Both `Environment` provider and `IsSessionRestricted` are checked only once per PowerShell session.
- Use `ConditionalWeakTable` to cache whether the feature is enabled or not for a given session.
- We cannot use `thread-static` variable for the caching because it's possible for Runspace to reuse threads.
Based on standard practices, we need to have a copyright and license notice at the top of each source file. Removed existing copyrights and updated/added copyright notices for .h, .cpp, .cs, .ps1, and .psm1 files.
Updated module manifests for consistency to have Author = "PowerShell" and Company = "Microsoft Corporation". Removed multiple line breaks.
Separate PR coming to update contribution document for new source files: #6140
Manually reviewed each change.
Fix#6073