Allow Integral Types to be Appended to Strings

Previously appending an object convertible to a string to a String depended on the presence of a String constructor accepting that type.  For most types this was not problematic as a templated constructor exists which takes any type which can be converted to a string.

However, given that overloads of operator << for both Strings and CodePoints are present, this was problematic for integral types.  Since the CodePoint class has a constructor which accepts any integral type, the conversion paths for an integral to CodePoint and String were equally favourable, leading to a compiler error.

Added a templated operator << which accepts any type convertible to String to rectify this.