Cleanup: refactor parsing and handling of Daemon config

* Merge `daemonconfig` into `daemon/config.go`
* Apply post-parsing default values in `NewDaemon` for DRY
* Command-line flags are defined and installed in `daemon.Config.InstallFlags` instead of in `main`

This depends on #7497
Look at how I implemented `ListVar`, `IPListVar` etc above. It's a much better API for parsing special types using `flag`, without needing to carry a special type in the resulting `Config` object. It also extends the existing `flag` API (actually we could probably add it to `mflag`).

I wanted to do this without disrupting the rest of the code which uses `ListOpt`. So I modified `ListOpt` so that it could support both the old usage (via `NewListOpts`) and the new usage (via `newListOptsRef`).