Don't wait for full length of buffer to arrive before returning.  Changed test to cover this.
added CircuitStreamTimeout configuration
REASON_NOROUTE was missing
Added a logging message to let user what's going on since this stage takes a couple of seconds
Refactor so that stream opening methods all either return a Stream or throw an exception
unused import
If exit stream request times out or fails for 'repeatable' reason, mark circuit to close.
Don't lock just to update activity timestamp.  Fixes a deadlock.
Don't assign streams to circuits which are marked for close
Refactored HttpConnection to correctly use InputStream/OutputStream instead of Reader/Writer
Detach stream from circuit when opening stream fails
New class to encapsulate and simplify concurrency for pending exit streams
Merge remote-tracking branch 'origin/master'