Add support for storing args during an exception raised by an irq.

The user code should call micropython.alloc_emergency_exception_buf(size)
where size is the size of the buffer used to print the argument
passed to the exception.

With the test code from #732, and a call to micropython.alloc_emergency_exception_buf(100) in boot.py, the following error is now printed:
```python
>>> import heartbeat_irq
Uncaught exception in Timer(4) interrupt handler
Traceback (most recent call last):
  File "0://heartbeat_irq.py", line 14, in heartbeat_cb
NameError: name 'led' is not defined
```

Currently the exception handler assumes intimate knowledge of the tuple, str, and list classes. If desired, we could create functions for each of these classes which initialize the object into a previously allocated buffer.
Since they were going into a python module named "micropython" I used micropython as the prefix. I was assuming the mp stuff was more about internals.

I created a separate header just because this would be the header for the micropython module. Right now it doesn't have much, but this will probably grow over time.

But I'm also happy to move the contents to obj.h as well.