Fix to make ConfigOpts no longer obscure IOErrors

This changes ConfigParser._parse_file such that it no longer interprets
all IOErrors as 'No such file or directory', and instead allows these
errors to propagate normally. The current behavior with respect to
ConfigOpts does not change for IOErrors indicating 'No such file' or
'Permission denied'.

Also added a test to exercise the case where IOErrors are reraised. The
'No such file' case is already covered by existing tests.

Change-Id: I10e4e5965212737a19f4f17153143f62b5c0c83e
Closes-Bug: #1244674