schedule.h: add preprocessor guard

whether this should really be a header is anothr question.
Use common hash function for filename disambiguation

The hash of the metadata/alphabet is used to avoid overwriting otherwise
similar saved nets.
fopen_or_abort should use const arguments
test_backprop: begin concentrating global options

In order to reuse the character language model in a planned XML parser,
it needs to be turned into a shared object.  Unfortunately, it is littered
with references to global state through the option system. This is a step
toward tidying that up.
test_backprop: shift some functions to charmodel.c, subsumes schedule.h

Following on from the previous commit, all the functions that have no
direct dependency on global options are in their own file. At the same
time it became easy and seemed wise to shift the contents of schedule.h
there.

More to come.
test_backprop: move most functions to char_model.c, with messy API

Also remove --deterministic-confab, replaced by --confab-bias=100.
test_backprop: fold schedule into model; remove unused margin property

And make simple_eval static, becuase it is only called by reference.
test_backprop: --confab-only uses malloc, outputs to stdout

Previously it used stack memory, which would not have worked well for
huge values. And it used stderr.
test_backprop: --confab-only implies --reload
test_backprop: don't special case a single training net

While this wastefully allocates a duplicate pointer, it saves at least
as many instruction bytes, and simplifies the code.
test_backprop: add basic metadata to nets

Metadata looks like this:
alphabet {{8 etaonihsrdlucmwfygpb,v.k-;x"qj'?:z)(_!*&}}
collapse_chars {{10872}{659/34][@}}
learn_caps 0

where {{}} are delimiters (no single character will work, because it could
be in the string). Come to think of it, perhaps this will break if the last
char is '}'.
test_backprop: don't free unallocated temporal_ppms
test_backprop: rearrange main(), and ignore too big validation set
scripts/rnn_desribe: try to clarify flags output, ignore rng
gstclassify: hoist constant expected number of metadata items
test_backprop: rework metadata to use simple separators

sscanf() doesn't work for test_backprop metadata because the alphabet
and collapse_chars fields can (and usually will) contain spaces. I looked
at using json, xml, or ini formats, but they all seemed like a lot of work
for little immediate gain.

In the end I just used the ASCII unit separator (\x1F), which is unlikely
to turn up in any alphabet, and was once upon a time meant for this
purpose.  There could of course be trouble with this later.
recur-nn: less noise from rnn_new_with_bottom_layer()

rnn_new_with_bottom_layer() makes a net without a bottom layer if you
give it a zero where it needs a size for the first hidden layer, and it
is easy to use it as a general net creator. This is OK, so turn off the
warning.
gstclassify: free metadata strings going out of scope.
ccan: update to more recent snapshot.

This brings a few posible benefits:

  * maybe bug fixes.

  * float_val functions are in opt/helpers.c, not in test_backprop.c

  * the GPL-2 switch is made clear, simplifying license explanations.

Also, to avoid sign-comparison warnings, switch them off for ccan/opt
in the makefile.
test_backprop: long_confab is unused for now. out it goes.