Refactor Mat_v5 to pass Matfiles around

Instead of passing the IO stream and swap_bytes boolean around separately, pass the matfile instead. This will allow all functions to have access to the subsystem.

Unfortunately requires a recent type inference bugfix (which has also been back-ported to 0.2): https://github.com/JuliaLang/julia/issues/5374
Add an outline for the read_opaque function
Use a concrete-typed IO in the Matfile

(Via parameterization).  This improves performance now that I pass around the matfile more