Remove default: cases from switches on enums

And make it so that the types in the cases always match the type being switched
on, so that the compiler can provide more useful warnings.

@alazier 
When compiling genuine C++ with GCC, this would produce a warning because to the missing return statement after the switch statement. From the point of view of the compiler, `mixed.get_type()` may return a value that is not one of the named values of the `tightdb::DataType` enumeration type, and that mean there is a chance of fall-through now. If it was up to me, I would end the function like this:

        switch (...) {
            ...
        }
        TIGHTDB_ASSERT(false);
        return nil;
    }