Merge: Robust Virtual Type
Improve the handling of inconsistent model when virtual types are badly defined.
The changes are mainly done with 2 things:
* still register broken `type` definition in the property, so that properties have at least a definition
* use bottom type (also called the absurd type) to indicate inconsistency in the model (instead of aborting)
Reported-by: @Morriar
Pull-Request: #1791
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>