py/emitnative: Simplify handling of exception objects from nlr_buf_t.
py/emitnative: Simplify handling of exception objects from nlr_buf_t.

There is no need to have three copies of the exception object on the top of
the native value stack.  Instead, the values on the stack should be the
first two items in an nlr_buf_t: the prev pointer and the ret_val pointer.
This is all that is needed and is what the rest of the native emitter
expects is on the stack.

This patch is essentially an optimisation.  Behaviour is unchanged,
although the stack layout for native exception handling now makes more
sense.

pozetroninc/micropython,kerneltask/micropython,pfalcon/micropython,bvernoux/micropython,trezor/micropython,kerneltask/micropython,kerneltask/micropython,adafruit/circuitpython,trezor/micropython,pfalcon/micropython,pozetroninc/micropython,bvernoux/micropython,selste/micropython,adafruit/circuitpython,adafruit/circuitpython,tobbad/micropython,trezor/micropython,henriknelson/micropython,MrSurly/micropython,adafruit/circuitpython,bvernoux/micropython,adafruit/circuitpython,pramasoul/micropython,henriknelson/micropython,pozetroninc/micropython,henriknelson/micropython,selste/micropython,selste/micropython,kerneltask/micropython,pfalcon/micropython,pramasoul/micropython,pozetroninc/micropython,pramasoul/micropython,tobbad/micropython,henriknelson/micropython,MrSurly/micropython,pramasoul/micropython,tobbad/micropython,pfalcon/micropython,bvernoux/micropython,kerneltask/micropython,pfalcon/micropython,adafruit/circuitpython,pramasoul/micropython,tobbad/micropython,trezor/micropython,MrSurly/micropython,MrSurly/micropython,MrSurly/micropython,pozetroninc/micropython,trezor/micropython,selste/micropython,bvernoux/micropython,selste/micropython,tobbad/micropython,henriknelson/micropython