Fix g++ 4.8 related build issues

g++ 4.8 does not tolerate narrowing conversions in initialisation - that is in line with the standard

The default move constructor does not get created as there is a user-defined destructor. Explicitly create the default move constructor.