Make code hint insertion on tab key configurable

Addresses #4963 by making the behavior of the `CodeHintList` on tab key events configurable on a global and per-`CodeHintProvider` basis. The `CodeHintManager` provider registration API is generalized with an additional optional property, `insertHintOnTab`, that indicates whether the `CodeHintManager` should request that the provider of the current session insert the currently selected hint on tab key events, or if instead a tab character should be inserted into the editor. If a provider omits this property, the behavior is determined by the `CodeHintManager`. The default behavior is to insert a tab character into the editor, as is the case now. The default can be changed globally with the new `CodeHintManager.setInsertHintOnTab(bool)` method. For an example use of this method, see my awesome new extension: [iwehrman/brackets-insert-hint-on-tab](https://github.com/iwehrman/brackets-insert-hint-on-tab).

This was @peterflynn's idea!