Changed the appearance of the PresentListOverview

The PresentListOverviewView is now a panel with text on it rather than a
button.

The AllListsView has changed to use a listbox of
PresentListOverviewViews rather than a wrap panel inside an items
control.

Also changed the MainWindowView so that the row where the current view
is displayed has a row height of * (fill) rather than auto as this was
preventing the scrollbar appearing on the AllListsView.
Changed the PresentListView

Added the list notes to the view.
Added a border underneath the list name and to the left of the arrow.
Added padding between the lists on the all lists view.
Resizing the all lists view in the horizontal direction will make the
list name and notes truncate.
The PresentListOverview is no longer responsible for displaying the
presents, that is done when selecting a list on the all lists view.
AllListsView doesn't change on single click

You now have to double click on a present list on the AllListsView to be
able to see the presents on that list.
Implemented IEditableObject for editing lists

Implemened IEditableObject on the EditableListViewModel so that if the
save fails, we can rollback the changes to what they were originally.
Introduced IViewModelFactory

Consolidated all of the various separate factories for creating view
models into one factory. Reduces the number of parameters that need to
be passed into some constructors dramatically.
Can change text on ChildWindow via message

The text on the ChildWindowView will now change when the
ChildWindowViewModel receives a message for failure to save data. Need
to actually display the appropriate view model but this is a start!
Content now changes in the child window

The content of the child window now changes to the appropriate view
model based on the message that it receives.