(feat) Clone chain only once through RefCell.

Eliminates the need to do: `let mut chain = self.chain.clone()`, which is
a second copy of the entire Chain for each request. Now chain is cloned only
once per request (in the clone of IronListener) instead of twice.

This should be a performance win for complex Chains, especially those containing
large numbers of Middleware or with complicated Middleware.