To fix ENG-6666, make NValue cast operations produce un-inlined values

This could be simpler:

        if (! condition) {
            yada;
        }
        else {
            return blahblah;
        }

can be:

        if (condition) {
            return blahblah;
        }
        yada;

Same comment applies below -- maybe even moreso there, since yada is the fall-through case -- though the fall-through is trivially to a break statement that leads to a trivial return. 

I don't have a fixed preference between "multiple return statements in switch cases" vs. "break statements that fall through to the end of the function or to a trivial 'return result;' " but the mix here of returns and breaks seems just a little odd.