Expose constructor names in Cstubs_internals.
A value-oriented stub-generation interface based around 'foreign'.

The idea is to make both the generator and the generated code
instances of the following interface

  sig
    type _ fn
    val foreign : string -> 'a Ctypes.fn -> 'a fn
  end

For the generator `fn' is defined as unit, since the implementation of
`foreign' writes out the code for a function rather than returning
one.  The generated code has `type 'a fn = 'a`, and `foreign' resolves
the name and type of the function to the instance written in the
generation stage.

The old interface is gone, along with the need to register paths for
views and structured types.
Views and structured types no longer need an identity.

This reverts commit 76f215d88298140c8163c52710906ffe158b3da7.
Update the tests to use the new stub generation interface.
Bring examples up to date with the new cstubs interface.
Update dependencies.