Add spec for IO.read using the given external encoding
Pass the given options hash from IO.read into File.new
Add specs for passing an Encoding object as the :encoding option
Add support for passing an Encoding object as the :encoding option
Remove `any_number_of_times` from mock expectations in IO specs

This was causing a false positive whereby the example specifying that
the :encoding option is coerced into a String was passing even when the
to_str method was never called on the mock object.
Coerce the :encoding option to a String when it's not an Encoding object
Merge pull request #2559 from leocassarani/issue-2519

Fix for #2519: File.read returns data with wrong encoding