[config] make bad values startup errors master
every HYDRANT_* scalar that didn't parse quietly fell back to its default, so ENABLE_FIREHOSE=0 left the firehose on and a typo in a duration ran with the default. bools only took true/false, and RELAY_HOST with a bad url left hydrant with no firehose source at all. now a value that doesn't parse stops startup with an error naming the variable and the value, like API_TCP_MANAGEMENT already did. values are trimmed and an empty one counts as unset. bools take true, false, 1 or 0. the `none` knobs take it in any case. values that parse but crashed or spun hydrant are errors with a hint too: FIREHOSE_WORKERS, DB_WORKER_THREADS, BACKFILL_CONCURRENCY_LIMIT and the events/records memtables at 0, DB_MAX_JOURNALING_SIZE_MB under 64, DB_REPOS_MEMTABLE_SIZE_MB under 2 and zero CURSOR_SAVE_INTERVAL, SEED_POLL_INTERVAL or OFFLINE_HOST_RETRY_INTERVAL. those live in Config::validate, so configs built in code and the ffi get them too. crawler_full_network.nu set CURSOR_SAVE_INTERVAL to a bare 1, which was ignored until now, it says 1s.