Propagate headers on redirect.

Propagate Cache-Control, Accept and Last-Event-Id headers on http
redirect by default.
Add stream.Close() function.

The connection, stream & decoder loops are kinda twisty. I'd like to
have a crack at refactoring this. Distinguish between remote close
requiring reconnection and local close which do not require
a reconnect.

Reconnect probably needs a ReconnectCheck callback since 401's,
500's may require the app to give up rather than reconnect but
stream.Errors only recieves an io.EOF which isn't so helpful.
Configurable stream client.

* CheckReconnect callback in the style of http.Client CheckRedirect.
* State machine replaces recursion.
* Common (Re)connect error handling.
Repository example was kinda racey.

Example repository test was dependent on http connection speed. For
better or worse Subscribe doesn't wait for an initial connection (or
failure) before returning anymore. Perhaps I should add a state so
you can wait if you like.
Call custom defined CheckReconnect callbacks.

The reconnect code only used the default reconnect policy even when a
custom policy was set on the client. I improved the tests a little by
waiting on the custom policy being called. It would be nice if the
tests didn't hang if callbacks aren't called.
Stream states.

* EventSource ready states.
* Use StreamClosed state to exit stream goroutine on http.Response.Body io.EOF
Check if stream is closed before attempting reconnection