Change CodeInspection Public API to expose providers and allow deregistering 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.

Although this changes the public API, it does not change any existing methods - it just expands upon them. For this reason, I think that this should not produce any backwards compatibility issues.

Some discussion on this topic has been done here: MiguelCastillo/Brackets-InteractiveLinter#44.

/cc @MiguelCastillo
This function really only seems to return false when there are no registered providers for the given language id.  There could be a registered language but not one matching the provider specified and it would return `undefined`.

Another point here is `if (!unregister(...))` will not work because this function only returns falsy values..  I think it's better if you return `true` if the provider is unregistered, false for all other cases.