(PUP-2026) Add PCallableType and PCallSignature for lambda and function

These types are used to describe a function or lambda and supports
having multiple overloaded signatures.
(PUP-2026) Add lambda/callable type to model

This adds a Callable type to the type system (the model), and makes
use of it in the new Function API (to return the type(s) of
a function's dispatcher - i.e. the supported signature(s).

A single Callable is returned for a single signature, and a Variant
for multiple signatures.
(PUP-2026) Add TypeFactory support for CallableType

This adds support for creating a callable type via the
TypeFactory:

* all_callables method produces a Callable compatile with all callables
* callable method produces a Callable with specified arguments
* with_block method adds a block Callable
* with_optional_block method adds an optional block Callable

There is no need to call the "constrain_size" method since min/max
can be given directly in the calls (min, max) as the last optional
parameters, and max can be given as :default as infinity.
(PUP-2026) Add support for Callable in TypeCalculator

This adds support for inference, assign ability and string formatting
of CallableType.

Supporting names was not a brilliant idea as it only adds complexity
to the Callable type with little gain (what names should be inferred?).
Parameter name support was therefor removed from CallableType
(PUP-2026) Allow block_type of Callable to be specified in factory call

This makes it possible to pass the block_type as the last argument
in the call to the Types::Factry.callable - i.e. if the last
type is a Callable, it is considered to always be the block_parameter.
(PUP-2026) Add support for Callable in TypeParser
(PUP-2026) Add support for Callable in access operator ([])

This also fixes an issue with a missing comma when transforming
type to string.
Merge pull request #2523 from hlindberg/pup-2026_add-callable-type

(PUP-2026) Add callable type