Extract brew packages/taps and brew cask packages into getters

Refactor:
 * The install tasks for brew and brew cask so that their packages can
   be put into a getter which then the tasks can use with iteration
Refactor uninstall/update tasks, add uninstall/update brew casks

Add:
 * Ability to uninstall brew casks packages
 * Ability to update brew casks packages

Refactor:
 * Position of update/uninstall tasks to be after install tasks
 * Update/uninstall task to have their logic extracted into their own
   methods
 * Naming of update/uninstall tasks (use packages in the brew task name)
Add update/uninstall tasks which follow the install tasks approach

Add:
 * Update task which attempts to update everything (brews and vim)
 * Uninstall task which attempts to uninstinal everything (brews)
 * Additional message in update brew cask task to describe workaround