Special cases for "should never get here"

For better self documentation. Also incorporated @adamhrz 's suggestion that we allow a reason to be passed to these types of asserts for better exception reporting. 

Just an idea. Do with it what you will.
That wouldn't be the way it worked in the real world, probably... we wouldn't necessarily "know" what the value of the variable being switched on is. Replace 0, 1, -1 with static constants and see if this still makes sense.