vhdl: add overhauled integer type
vhdl: add overhauled integer type

Add the struct `IntegerType` to the `ty2` module, which is a lightweight
wrapper around the new more fundamental `Range` struct. The latter
encapsulates the semantics of ranges in VHDL with `to` or `downto`
direction, as well as left/right and lower/upper bounds. Integer types
simply deref to a range that can be checked for its length, null, and
bounds.

fabianschuiki/moore,fabianschuiki/moore,fabianschuiki/moore,fabianschuiki/moore,fabianschuiki/moore