core 109.41.00-rc1

## Async_parallel

- Renamed `Parallel` as `Async_parallel`.

## Async_unix

- Changed `Reader` to treat more `errno` responses to a `read()` system call as `EOF` rather than raise.

  The following are now treated as `EOF`.

  ```
  ENETDOWN
  ENETRESET
  ENETUNREACH
  ETIMEDOUT
  ```

- Improved the error message that async prints when the thread pool is stuck, including the time of the error.
  
## Bin_prot

- Remove all uses of "unwrapped" pointers

  Unwrapped pointers cannot coexist with the remove-page-table
  optimization.

  Removed all the C stubs for reading/writing and used instead either
  the new primitives of the next OCaml or standard OCaml code
  reading/writing integers byte by byte.

  Since we don't have unsafe/safe functions anymore but only safe ones,
  removed all the `bin_{read,write}_t_` functions.

  Also renamed `bin_read_t__` to `__bin_read_t__` for the same reason as
  sexplib: to avoid confusion with the function generated for `t_` and
  hide it in the toplevel.

## Core_kernel

- Added `Map.of_alist_reduce`.

  This function is a natural addition alongside `of_alist_fold`.  Its
  advantage is that it does not require an `init` argument like
  `of_alist_fold`.  Moreover, it does not involve `option` types, like
  `List.reduce` does in order to handle the empty list case.

## Core

- Added `Command.Spec.map_anon` and `map_flag`.

  ```ocaml
  (** [map_flag flag ~f] transforms the parsed result of [flag] by applying [f] *)
  val map_flag : 'a flag -> f:('a -> 'b) -> 'b flag

  (** [map_anons anons ~f] transforms the parsed result of [anons] by applying [f] *)
  val map_anons : 'a anons -> f:('a -> 'b) -> 'b anons
  ```

- Fixed `Unix.open_flag` to compile with OCaml 4.01.

  It needed the additional constructor `O_CLOEXEC`.

## Core_bench

- Columns that have a `+` prefix are now always displayed, whereas
  columns that don't are displayed only if they have meaningful data.

- Added the ability to reload saved metrics (benchmark test data) so
  that bench can re-analyze them.

## Ocaml_plugin

- Added option `-strict-sequence`, which is set to `true` by default.
  
## Type_conv

- Fixed the generated code of `typerep` and `sexplib` on sum types containing `True` or `False`.

  Without this fix, `typerep` would wrong constructor names for
  `Blang.t`, for instance.

  `Variantslib` has the same problem but applying the same fix there
  would still not make the generated code compile because the generated
  code would contain labels and variable named `true` or `false`.

  Other syntax extensions should not be affected because they don't
  build strings from constructor names.