Prototype

A first draft that contians all the major components:

* Host Definition

  Hosts are currently described by a tuple of (hostname:string,
  roles:list, tags:dict) with the initial implementation of `defhosts`
  revolving around the idea of environments as the primary delineator or
  clusters. However, experience has shown that support for clusters of
  clusters might be worthwhile (e.g. database cluster (master/slaves),
  app cluster (web, background workers), etc. might all comprise the
  production cluster).

* Targeting

  The `with-hosts` macro provides a nice starting point for targeting
  hosts in an efficient manner based on the current definition of a
  host. In the future, it could be worthwhile to allow for more robust
  filtering in the `:where` clause by allowing arbitrary functions to be
  used rather than just a dict.

* Execution

  Currently simply subprocessing a call to `ssh` to provide connections
  to hosts which works quite well and as a byproduct provides parallel
  execution. A look into utilizing the `-M` option should allow for a
  simpler API and might make it easier to migrate to a more Pythonic
  SSH API. Experience has also shown that some sort of `in-parallel`
  construc is needed to provide parallel execution of different commands
  against different hosts (e.g. restarting the web application and the
  background workers for an application at the same time).

* Output

  Mildly good-looking output exists with colors and unicode. An attempt
  was made to avoid overloading user with all the output of all the
  commands and simply providing the success/failure of each result.
  Need better logging around output to provide deubgging information
  when things do go wrong.