example of a different way of solving the rotating hosts use case

The main change is that the Deployer#deploy trait now looks like: 

    def deploy(filename: String,  lastModified: Long, contents: => InputStream, info : ContentInfo): Either[String,DeployedElement]

Where `DeployedElement` is: 

    trait Element[A] {
      def path: String
      def contents: A
      def lastModified: Option[Long]
    }

    trait DeployedElement extends Element[Unit] {
      override def lastModified: Option[Long] = None
      override def contents: Unit = Unit
    }

This allows for 3rd parties to provide their own implementation of `path` after they have successfully deployed.