[split] finagle-http: fix flaky test

It was relying on timing numbers.

RB_ID=120264
TBR=true
[split] Birdcage assembly: Prefix jar names with the groupId  - Prefix jar names with the groupId to prevent, for example:  (com.twitter.X.)`thrift-0.2.jar`  from overwriting  (com.twitter.Y.)`thrift-0.1.jar`

RB_ID=118706
TBR=true
[split]  finagle: refactor clients and servers to be simpler, more logical.

Clients now comprise:

A Transporter[In, Out] is a function SocketAddress =>
Future[Transport[In, Out]]. That is, it connects to a socket address
and provides a typed transport to talk to that endpoint.

A Dispatcher[In, Out, Req, Rep] is a function Transport[In, Out] =>
Service[Req, Rep] that takes a transport and provides a service - a
bridge. This is what connects the "stream" oriented Transport to the
"RPC" oriented Service.

A Binder is a function SocketAddress => ServiceFactory, which is
pretty self-explanatory. Given a SocketAddress, bind it to a
ServiceFactory. From types, it's obvious that the role of the binder
is to establish the host-specific stack. In order to construct a
binder, you need a Transporter and a dispatcher:

	object MuxBinder extends DefaultBinder[ChannelBuffer, ChannelBuffer, ChannelBuffer, ChannelBuffer](
	  new Netty3Transporter(mux.PipelineFactory),
	  new mux.ClientDispatcher(_)
	)

And finally, the Client provides a Client[Req, Rep] given a Binder
(and possibly other configuration paramters, like a pool
implementation):

	object MuxClient extends DefaultClient[ChannelBuffer, ChannelBuffer](MuxBinder, _ => new ReusingPool(_))

Servers are simpler, with just two components:

A Listener[In, Out]:

	trait Listener[In, Out] {
	  def listen(addr: SocketAddress, newConnection: Transport[In, Out] => Unit): ListeningServer
	}

which is given a binding address and a function to call for each new
connection (with a a typed transport). Netty3Listeners are one such
example.

And the Server[In, Out, Req, Rep] which takes a listener and a
dispatcher, providing a Server[Req, Rep]:

	object MuxServer extends DefaultServer[ChannelBuffer, ChannelBuffer, ChannelBuffer, ChannelBuffer](
	  MuxListener, new mux.ServerDispatcher(_, _))

Taken all together, Mux.scala is now just [1]

*

I did a bunch of other refactors in order to support these changes.
Maybe some went a little too far. I had to stop myself in order to
limit the size of this change; so watch this space for more.

- finagle threadpools are now daemonized. To preserve the old behavior
for {Client,Server}Builder *only*, something called "ExitGuard" is
introduced, which does what it is named.

- Service, ServiceFactory, and a bunch of other things are made
Closable. The details of Closable are still a bit in flux. In
particular, it makes sense for Closables also to be Awaitable.

[1] Mux.scala:

	object MuxBinder extends DefaultBinder[ChannelBuffer, ChannelBuffer, ChannelBuffer, ChannelBuffer](
	  new Netty3Transporter(mux.PipelineFactory),
	  new mux.ClientDispatcher(_)
	)
	object MuxClient extends DefaultClient[ChannelBuffer, ChannelBuffer](MuxBinder, _ => new ReusingPool(_))

	object MuxListener extends Netty3Listener[ChannelBuffer, ChannelBuffer](mux.PipelineFactory)
	object MuxServer extends DefaultServer[ChannelBuffer, ChannelBuffer, ChannelBuffer, ChannelBuffer](
	  MuxListener, new mux.ServerDispatcher(_, _))

	/**
	 * A client and server for the mux protocol described in [[com.twitter.finagle.mux]].
	 */
	object Mux extends Client[ChannelBuffer, ChannelBuffer] with Server[ChannelBuffer, ChannelBuffer] {
	  def newClient(cluster: Cluster[SocketAddress]): ServiceFactory[ChannelBuffer, ChannelBuffer] =
	    MuxClient.newClient(cluster)

	  def serve(addr: SocketAddress, service: ServiceFactory[ChannelBuffer, ChannelBuffer]): ListeningServer =
	    MuxServer.serve(addr, service)
	}

RB_ID=117888
TBR=true
[split] Birdcage Build: release and stabilize parent projects  - Release and stabilize package-dist in order to force pulling in the latest version.  - Was causing build breakages depending on the environment.

RB_ID=120641
TBR=true
[split] temp fix for miticate false test failures on CI systems (for CACHE-609)

RB_ID=120659
[split]  update finagle documentation: validating http servers require the "Hosts" header

RB_ID=120584
[split]  Tracer: use new daemon() flag; get rid of factory. Simplify.

RB_ID=119099
TBR=true
[split]  finagle: deprecations, make tests less verbose

RB_ID=119451
[split]  core libraries: preliminary 2.10 port/build

RB_ID=119983
[split]  finagle-http: add new-style client and server, including a primitive URL fetcher

scala> com.twitter.finagle.Http.fetchUrl("http://www.google.com/")
res0: Future[...

RB_ID=121108
[split]  util: bump minor

RB_ID=121042
[split]  finagle, ostrich: bump minor

RB_ID=121293
TBR=true
[split]  made zRange... commands work more like the actual redis commands

Signed-off-by: Anirudh Srinivas <anirudhs@twitter.com>

RB_ID=120760
[split]  release version 6.1.0 of util

RB_ID=121378
TBR=true
[split]  release version 9.1.0 of ostrich

RB_ID=121414
TBR=true
[split]  finagle: update stats reporting; switch to Groups

- finagle-stats is a new project that provides a StatsReceiver based on
  Twitter's Metrics library.

- provide a reportHostStatsTo API on ClientBuilder that per-host stats
  will be reported to.

- Use Groups in place of Clusters

RB_ID=120005
[split] finagle: fix sbt build

RB_ID=121511
TBR=true
[split]  create twitter-server

Twitter-Server: a sane default App specific to Twitter.

RB_ID=115633
[split]  release version 6.1.0 of finagle

RB_ID=121495
TBR=true
[split]  Programmatically optimize imports

RB_ID=121577