def deploy(&block)
      in_directory do
        self.setup!
        self.push_with_retry!
        block.call(self, api_rate_limit.call, output) if block_given?
      end
    ensure
      self.teardown!
    end
def deploy(&block)
      in_directory do
        self.setup!
        self.push_with_retry!
        block.call(self, api_rate_limit.call, output) if block_given?
      end
    ensure
      self.teardown!
    end
creates a new app on heroku, "pushes" via anvil or git
 then yields to self so you can call self.run or
 self.deployed?
 Allow deploy failures on CI server by setting ENV['HATCHET_RETRIES']