Now we can parse notes (TN and LN).

These apparently aren't used at all in practice -- they certainly
don't appear in our samples -- so the code is untested.
A renaming and a cleaner test layout.

Timetables have become Schedules, as is more consistent with the
upstream documentation. Also, the test framework has been moved to
"test.py" as we plan to use that as a testbed for validation code in
general: eventually some will probably crisscross different reader
modules.
Some changes as suggested by the test code.

These changes are all just checking whether data is defined before
inserting it.
Now validating timing loads.
Some homogenisation between the link readers and the schedule reader.

Changed link readers to produce lowercase keys, and to use the test
framework.
Better warnings; tidier invocation for schedule reader.

Warning handling has been delegated to a context manager; this results
in less baroque call syntax in the schedule reader.

We've also centralised the warnings, so other readers can use the same
ones.