Implementation complete.

There are a few errors that are not detected yet, including:

- Edges may lead to nowhere without triggering an error
- The pipe character sometimes gets picked up as an edge when it should be
  an error.
- Vertices may have the same name without even a warning...