Make abs CTFE-able for the majority of built-in types

As of version 2.065, DMD cannot process assembly language blocks
in CTFE code. Removed the asm blocks for most of the built-in types
to make CTFE possible. This has the side effect of making the
function throw because std.conv.to is used to make the type system
happy for short and byte types (note that no overflow is possible
on lines 44 and 50 but the compiler does not catch that).
Clarify the use of non BCD types in arithmetic

Built-in integral types can be inputs to some functions, such as
one of the constructors and opEquals. These values are now
converted to packed BCD encoding at the start of their use so that
they match the encoding of a BCD type payload.

Note that this means that these values should be passed as integers
when used as an argument. For example, to instantiate a BcdSingle
value to the number 123 the following code is used

    auto a = BcdSingle(123);

The constructor correctly maps the integer 123 to the payload 0x123.

Also removed opBinaryRight. This function was not being called and
instead the conversion to ulong (via the alias this statement) was
taking over in statements like the following:

    auto a = 123 + BcdSingle(456);