Read input file as argument. Add subpoint method.

The file which will be used to generate the wireframe is now read as a
command line argument, instead of simply being piped to stdin.
Additionally, this requires the small change of the program reading from
a file instead of standard in, so we use withFile to get the camera and
edge list from the file.

To render the wireframe, we are going to translate our entire scene so
that the camera is located at (0, 0, 0). This should hopefully make some
of the math easier later on because the orientation will now be a vector
which is the direction the camera is facing. This makes it easier to
locate a plane perpendicular to this direction (more on that in future
commits) and project onto it since it will pass through the origin.
To translate these points, we need a way to subtract two points, which
is where the subPoint method comes in. We will use it later to subtract
the camera's location from all points, which is how we center the camera
at the origin.