Singleton object used to register all kinds of assignments from one type to another. First, one have to note
that assignments not only occurs in the assignment statement itself but also, for example, while passing
some argument to a routine or for creation statements, or, as another example, for the assignment attempt.
The assignment_handler singleton has two main goals. The most basic goal (historically speaking) is to
provide IMPLICIT_CAST wrappers when they are necessary. The brand new usage of the assignment_handler
(since the 1.0 SmartEiffel release) is to build the assignments type graph in order to compute more
accurately the possible dynamic types of an expression (i.e. the corresponding RUN_TIME_SET). This
information is important to implement dynamic dispatch and to perform the whole system covariance check
(safety_check).This singleton is shared via the GLOBALS.assignment_handler once function.