Renamed ContextProvider to DomainObjectProvider
Added command factories for each type of command

This is an important change to the command infrastructure as it means the
   commands have a less global scope (since they cannot access the event
   arguments from the command that initially created the command).

 - Also added tests for existing commands
 - Remove the ClearLayoutsOnActiveTagsCommand as this was duplicating
   functionality in the AssignLayoutsToActiveTagsCommand. Instead there is a
   command factory for this functionality which instantiates the
   AssignlayoutsToActiveTagsCommand with the correct dependencies for clearing
   layouts