Allow filenames with brackets () or [] to be read.

Fixes #233

There are probably other special characters that need escaping but I haven't encountered them in my tests.  Added a test case for unicode file names too.  

I didn't encode the whole file as utf-8 as it breaks the  `test_can_read_binary_data_in_binary_mode` test case.  You may want to compare hex representations with `.unpack('H*')` so that file encoding doesn't break the test case.