closes #418 also make clz, ctz return smaller integer bit widths and use smaller integer bit widths for enum tag types
* add u128 and i128 integer types * add f128 floating point type * implement big integer multiplication (See #405)