/**
* Bitvector extension / narrowing trait.
*
* The amount of bits in the result is given by the generic parameter `X`.
* If `X` is greater than original number of bits, the bitvector is extended according to its type.
* If `X` is lesser than original number of bits, the highest bits of bitvector are dropped.
*/