Always generate the maximum number of lines

Instead of allowing requests for any number of lines, always return as
many lines as allowed.

Also remove all references to setting line count in the generated HTML.
names: only generate 25 lines at a time

50 lines is a lot, and makes it less likely for people to see the link
at the bottom.
Batch lines into arrays for channel put/get

Instead of enqueing individual lines in the per-chain channels, use
full batches lines in array refs.
Ensure each sample gets a new line with ?plain

Samples generated with sep => ' ' don't include newlines at the end,
which causes ?plain to produce one line of output. Fix it by adding a
newline if sep evaluates to true.
Split chain and channel in %fcache

Instead of just storing the Coro channel in %fcache, store the chain and
the channel in a nested hash structure.
Factor out generate_samples() function

Enable proper sample generation outside of the channel-related code
block by moving all the relevant code into a new function.
Use a random seed to generate samples

Take a random seed as an argument to generate_samples(), to allow
generating the same samples on demand.

Since the seed argument is required, create a new Coro::Channel
dedicated to providing random seeds.
Put seed value in channel

Include the random seed used to generate samples in the channel.
Add seed query parameter

Allow generating samples from a seed parameter in the request.
Add permalink in make_pretty()

Use the seed to allow a "permalink" for a particular results set.

Note: this requires a version of String::Markov that supports stable
chains.

And of course, if the input files change at all, then the results will
change as well.
Sort %info for index page

May as well present a consistently ordered index page.
Add link back to GitHub repo
Moar newlines

Make resulting markup prettier