Undo/Redo and small improvements

Major Changes:
- Simple Undo/Redo for each tile changed.

Minor Changes:
- Fix an issue where Save/Close options become disabled when the user chooses Close but cancels the operation.
- Fix a bug where using the eyedropper prevented the user from re-selecting the brush they had selected in the brush list before using the eyedropper.
- Fix a bug where small artifacts can be left on a canvas by certain objects.
- Added Refresh to View menu.
- Added hotkeys to menu options, as well as key shortcuts via ALT.
- The object/tile preview now shows the orientation/direction of the object.
- The brush and parts lists now always show their selection even when the controls are out of focus.
- The workspace area(ImageBox) now steals focus when the mouse is moved over it. This fixes an issue with the mouse wheel not working when another control is in focus.

Developer Changes:
- Refactored and moved some things around.
- Fix mistake in some original code that mixed up oldBrush/newBrush in the refresh/update rectangle code.