Fix _stream_result concatenating bytes with str

Without this option, requests returns lines as bytes on Python 3
which can't be concatenated with the str '\n' in the yield.
Allow copy() to accept dictionary like diff()

Client.diff() silently convert container as a dictionary
to container['Id'] while Client.copy() does not.

This change makes copy() do the same job.
replace status with status_code as defined by requests API

Move this statement in `else` clause to make sure the try except block doesn't catch
coding errors.
A ping should be successful if status_code is less than 400
Merge pull request #157 from ticosax/ping-fixes

Ping fixes
Merge pull request #155 from bfirsh/fix-concat-string-with-bytes

Fix _stream_result concatenating bytes with str
Merge pull request #156 from dmiyakawa/master

Allow copy() to accept dictionary like diff()