_sign_string private_key_file can now be file-like

Distribution._sign_string is now a little bit more flexible, allowing
the private_key_file to be a file-like object (or really anything with a
.read() method).

My experiments in the world of signed cloudfront URLs were being impeded by the inability to pass file-like objects through _sign_string. This builds on the unit tests I wrote a little bit ago (https://github.com/boto/boto/pull/1271), and I'm pretty confident that it's backward compatible.

Test included.