Widget cleanup and new HomeButton widget.

1. Renamed FullscreenWidget and associated files to to FullscreenButton.
2. Added a new HomeButton widget.
3. Added Command.beforeExecute and Command.afterExecute events to enable additional processing when a command is executed.
4. Added specs for everything, included previously missing specs for FullscreenButton and createCommand.  This fixes #581 

The motivation for this work is to use the new widget in the new Viewer widget replacement being worked on in the widget branch.