Fixed a nonsensical comment.
Fix Shoeshine's ini to reference Carrot Top correctly.
To aid in the editing of ponies, infrastructure must be able to handle a pony with no behaviors (or, a lack of currently valid behaviors for display). This entailed the following:

- Changed sprite interfaces to interpret a null image path as a request to not draw an image (previously - undefined and would crash).
- Changed Pony to allow CurrentBehavior to be null, and allow several actions to set a null behavior.
- Changed editors to not generate a context menu when there are no behaviors (empty sub-list was not allowed).
- Changed some editor forms to be resilient in the face of missing behaviors or images.
Changed tagging to be more handled more consistently across the codebase. MainForm will handle the tags filter on its own rather than having other areas constantly mess with it (in particular this lets the "Not Tagged" option be handled more cleanly).

Options now treats custom tags as an ordered list, rather than unordered.
Tag dialogs will be more careful when updating tags on a pony - ensuring unrecognized tags are left alone.
Fixed a race condition in AnimationLoopBase. Start method needs to block until the animation thread has started. This ensures startup is done and prevents the caller calling additional methods until the thread is running. In particular, anything that needs to check the Started flag has been set.
Added a disposed flag to IdleWorker to prevent multiple disposals which causes an exception as ManualResetEvent is not safe to call Dispose on multiple times. Multiple calls can happen if the control itself is disposed multiple times.
Added disposing check in PonyPreview to prevent calls to BeginInvoke when the preview is being closed. This is because the UI thread will be waiting on the animation thread to finish. Thus the animation thread cannot call into BeginInvoke as it will deadlock since the UI thread is already waiting on it.
Required identifiers to pass NotNullOrWhiteSpace checks, instead of allowing empty or whitespace strings. Being not empty is required as the save format must use empty strings as placeholders for null in referential links. Thus we don't want any 'null' reference to actually resolve to an item named after the empty string. Not allowing whitespace is just to be nicer to users so names can be told apart.

Added some checks to prevent quotes in directory names when creating or changing pony directories (since the save format can't handle it).
Fixed Referential.CheckNotCircular which ironically could get into an infinite loop if nextElement returned the current element.
Added NewPonyDialog2 to allow new editor to create some new ponies. This will force bases to be reloaded and then the new pony will be highlighted.
Refactored new editor validation and also corrected tree view sorting. If a second validation is triggered whilst one is in progress, the first will exit early to prevent validations getting out of hand.
Changed new editor to allow details dialog to appear even when other documents for the pony are open. Instead the directory will be read-only and a small note will inform the user they need to close the open documents to allow editing.
Added a series of Bind methods in ItemEditorBase to make it much easier to hook up UI elements to ini objects. This also makes it easier to prevent a UI field or the source field triggering recursive updates to each other and thus setting unwanted defaults into fields by accident due to the lenient parsing.

Simplified the method flow to allow new items and existing items to share most of the common flow.
Added UI elements for creating new items of each type to the new editor.

Added a button to hard restart the pony preview in order to clear cached images.
Prevented opening more than 50 tabs (some testing revealed around ~135 would exhaust handles so this should stop that).
Changed closing of all tabs to queue as work items to allow progress and cleaner UI refreshes.
Hooked to Disposed instead of FormClosing.
Added method to temporarily hide preview when new editor is displaying dialog boxes.
Change item editor to not show wait cursor when the source changes (not long enough to warrant it).
Changed showing of DetailsDialog in new editor to also hide preview.
Fixed FileSelector to handle reinitializing correctly when files are removed. Also ensured Filter was set on OpenFileDialog to make it useful.

Fixed ItemEditorBase to correctly handle syncing typed file selector paths (closure variables in wrong place).
Added ability to manually reload on the editor, and also wire in a revalidation when asset files change (i.e. file changes made by FileSelectors in ItemEditorBases).
Improved PonyPreview disposing check to ensure flag is update across threads.
When the preview appears in the new editor, an array of buttons will be streamed into the lower area to activate behaviors. Not perfect but better than a context menu only.
Fixed another closure issue where changing any effect property would cause images to be reloaded. Also changed paths to use path comparison rather than straight up string comparison.

Fix FileSelector.ListRefreshed to not raise the AssetFileIOPerformed during its initialization.