Used buffered sockets to send events to KISSmetrics
Small refactoring
Added exception if socket write failed
Removed file buffering, used one permanent socket connection per worker
Used PHP_QUERY_RFC3986
Made sure that the whole tracking request is being sent

- Used blocking mode (default)
- Supported transport in arbitrary chunks
- Resent the whole request if the socket connection has been reset
Checked the KISSmetrics response

- Thrown exception if the response cannot be read or is malformed
- Thrown exception if the status differs from 200
Used GuzzleHttp to implement the transport to KISSmetrics

- Installed GuzzleHttp aka Guzzle 4
- Replaced CMService_KissMetrics_Transport_Socket by a proxy to \GuzzleHttp\Client
Review requests

- Used Guzzle 4.1 (4.1.2 upwards)
- Relied on Guzzle throwing on errors (and don't throw on 2xx codes)
Merge pull request #1313 from fauvel/issue-1313

Keep socket connections to KISSmetrics open