111.03.00

- Add `?max_connections:int` argument to `Rpc.Connection.serve`.

    `max_connections` is passed to `Tcp.Server.create`, and limits the
    number of connections that an Rpc server will accept.

- Improved `Log.Rotation`:

    - Made `Log.Rotation.t` abstract; use `create` rather than an
      explicit record.
    - Added a `` `Dated`` `naming_scheme`.
    - Add `Log.Rotation.default`, for getting a sensible default
      rotation scheme.
    - Added an optional (but discouraged) option to symlink the latest
      log file.
    - Every log rotation scheme has an associated `Time.Zone.t`.
    - Changed the internal representation of `Log.Rotation.t`, but
      `t_of_sexp` is backwards compatible, so existing config files will
      continue to work.

- Changed `Udp.bind_any` to use `Socket.bind ~reuseaddr:false`, to
  ensure a unique port.
- Added `Tcp.Server.listening_socket`, which returns the socket the
  server is listening on.

    Changed `Tcp.Server` so that if the listening socket is closed, the
    server is closed.

- Added to `Udp.Config.t` a `max_ready : int` field to prevent UDP
  receive loops from starving other async jobs.
- Improved `File_tail` to cut the number of `fstat` calls in half.

    `File_tail` uses a stat loop to monitor a file and continue reading
    it as it grows.  We had made two `fstat` invocations per loop
    iteration, using `Async.Std.Unix.with_file` which constructs an
    `Fd.t` and therefore does it own `fstat`.  Switching to
    `Core.Std.Unix.with_file` with `In_thread.run` eliminated the extra
    `fstat`.