Change CodeInspection public API to expose providers.

Changes getProvidersForPath to be public - allows extensions to query providers for custom linting.
Adds getProviders to allow extensions to get all providers.
Adds deregister to allow extensions to remove a provider when the extension provides a provider with the same functionality.
Remove getProviders() - should never be used.

Change arguments of unregister() to not require a full provider object, just the name.
Return true if any providers are removed in unregister().
Delete unregister function, add unit test for getProvidersForPath.
Change getProvidersForPath to return an empty array when no providers registered for language.
Fix indentation of line.
Clone the providers array returned for a given path to prevent outside modification.
Merge pull request #9189 from Mark-Simulacrum/codeinspection-public-access

Change CodeInspection Public API to expose providers