sheet change detection, bound window title

A new class, SpriteSheetFileInformation was added to represent when a
sprite sheet is created, saved, or loaded.  The load/save commands were
modified to work with this for their success handlers.  The sprite sheet
VM now uses this instead of just the sprite sheet for its
NewSpriteSheetLoaded event.

The sprite sheet VM now has additional properties and internal event
handling to detect changes and allow for the associated file name to be
updated.  This also involved creating a SheetTitle property, which the
main window now binds to.
prompt to discard unsaved changes (close #9)

The sheet VM was modified to have an internal function to check and
prompt for unsaved changes, which is exposed through the
CheckUnsavedChangesHandler property.

This property is now used as the parameter for the new/load commands,
and is checked in the closing event for the main window (after changes
have been committed for any currently-focused element).