Editor plugin API updates

Various usability updates to editor plugin API.

Changed access of AGS.Editor.ComponentController.ctor() from public to
private (class is a singleton)
Added public property AGS.Editor.ComponentController.Components
[IList<IEditorComponent>]
Added property AGS.Types.IAGSEditor.Components [IList<IEditorComponent>]
Added implementation of IAGSEditor.Components to
AGS.Editor.AGSEditorController
Added public interface AGS.Types.IRePopulatableComponent (implements
IEditorComponent)
Added public methods
AGS.Types.IRePopulatableComponent.RePopulateTreeView() and
AGS.Types.IRePopulatableComponent.RePopulateTreeView(string
selectedNodeID)
Class AGS.Editor.Components.BaseComponentWithFolders<ItemType,
FolderType> now implements AGS.Types.IRePopulatableComponent
Changed access in
AGS.Editor.Components.BaseComponentWithFolders<ItemType, FolderType> of
methods RePopulateTreeView() and RePopulateTreeView(string) from
protected to public.
Added public methods AGS.Types.Scripts.RefreshProjectTree(IAGSEditor)
and AGS.Types.Scripts.RefreshProjectTree(IAGSEditor, string)
Added public delegates AGS.Types.Game.GUIAddedOrRemovedHandler(GUI),
AGS.Types.Game.GUIControlAddedOrRemovedHandler(GUI, GUIControl)
Added public events AGS.Types.Game.GUIAddedOrRemoved,
AGS.Types.Game.GUIControlAddedOrRemoved
Added public methods AGS.Types.Game.NotifyClientsGUIAddedOrRemoved,
AGS.Types.Game.NotifyClientsGUIControlAddedOrRemoved
Merge branch 'master' of https://github.com/adventuregamestudio/ags