Implements gf (go to file) and <C-w>gf (go to file in new tab) for Visual mode

This resolves #1351. Please review carefully because I want to make sure that I have conformed to the design and testing strategy of this area of the code. Please don't feel bad about requesting any refactoring or further unit tests or anything because I am well aware that may need to be done.
Yes, that would make sense, particularly since it is a functional language. So create a type with two constructors, right? Or am I misunderstanding "enum" in this context?