Front end changes for optional return time.

Backend just ignores it for now. Tidied up passing around of user input
a bit, along with job IDs and URL generation.
Better handling of stops and times.

Fewer magic tuples, more objects, yay.
Handle return time in the backend, if provided.

If a return time is given, use it for checking time restrictions, and
only try and split at stations called at in both directions.
Add via High Wycombe restriction station.
Add different types of singles in each direction.
Tweak form JS and text.