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
is there a reason to match on `name`?  isn't just a reference to the `provider` enough?  Otherwise, why not just pass `provider.name` to this function and match on the string value passed in against the registered provider name. Then  you could just pass any string (constant or otherwise) to this function to unregister the provider which may make it to test because you won't have to create an shell record just to remove it `{name: "myProvider"}` vs. `"myProvider"`