Add X-Forwarded-For to access log records

https://github.com/cloudfoundry/gorouter/issues/48
Namespace x-forwarded-for, add test for when missing

 - Added an explicit key so that log parsers can easily see which column
   corresponds to x-forwarded-for, especially since it might be empty
 - Tested handling of missing values
 - Also extended missing value test to test more existing
   things-which-can-be-nil

[#76123118]

Signed-off-by: Michael Fraenkel <fraenkel@us.ibm.com>
In config's Process(), assert that "StartResponseDelayInterval" cannot be
greater than "DropletStaleThreshold" for avoiding possible routing
failure.
Slightly nicer warning message

when automatically changing DropletStaleThreshold to StartResponseDelayInterval

Signed-off-by: Michael Fraenkel <fraenkel@us.ibm.com>
Revert "Avoid encoding ! characters in proxied requests"

This reverts commit 622b3596d5e135fcd3b129fc5bf9ee98fdad3ed7.
Document full current behaviour of proxy URL encoding

We may want to change this behaviour so that URLs are transparently
proxied rather than being messed with /at all/ in the proxy (other than
switching the host). Before considering that, this commit backfills
tests so that the current behaviour is fully specified.

 - when the value is already percent encoded:
   - most values stay encoded
   - some values get decoded before being passed on (+ and /)
     - previously our test for handling encoded urls was ONLY testing
       this edge case, which was quite misleading

 - when the value is not already encoded:
   - unreserved characters aren't encoded
   - special characters are encoded before being passed on
   - some of the set of reserved characters are encoded (!,*,',(,)) (due
     to golang not considering the full set of rfc3986 characters
     reserved)
   - the rest of the set of reserved characters are passed on unmodified

[#76815268]

Signed-off-by: Michael Fraenkel <fraenkel@us.ibm.com>
Init logger before loading config

[#74363508]

Signed-off-by: Julian Friedman <julz.friedman@uk.ibm.com>
Request URIs should be transparently proxied

Previously we were decoding the incoming URI to a net.URI object and then
encoding it back to a URI object to make the outgoing request. On the way
through this process, due to the way golang handles encoding and
decoding, the URLs sometimes silently changed. For example certain
characters such as ! would get percent-encoded before making it to the
backend. Other characters such as $ were sent to the backend pct-encoded
(i.e. as %24) whether or not the original request sent them encoded or
un-encoded.

This commit uses req.RequestURI instead so that we use the exact
incoming URI in the outgoing request.

[#77014252]

Signed-off-by: Michael Fraenkel <fraenkel@us.ibm.com>
Update travis to use go 1.3

[#74057366]
Seed a random number generator

[#78548526]

Signed-off-by: Matthew Sykes <matthew.sykes@gmail.com>
Update godeps
Use Apcera's yagnats

[#78730030]
Bump yagnats version
use dropsonde for logging

[#74343664]

Signed-off-by: Johannes Petzold <jpetzold@pivotal.io>
remove loggregatorlib dependencies

[#74343664]

Signed-off-by: Johannes Petzold <jpetzold@pivotal.io>
Switch to cloudfoundry/dropsonde

[#79356910]

Signed-off-by: Matthew Sykes <matthew.sykes@gmail.com>
merge from master

Signed-off-by: Andrew Poydence <apoydence@pivotal.io>
Update to use the thinner yagnats interface

[#79120166]
Fixed instrumentation bug related to dropsonde-instance-id

[#79186814]

Signed-off-by: Johannes Petzold <jpetzold@pivotal.io>
Merge remote-tracking branch 'origin/pr/56'