py/gc: Make memory manager and garbage collector thread safe.

By using a single, global mutex, all memory-related functions (alloc,
free, realloc, collect, etc) are made thread safe.  This means that only
one thread can be in such a function at any one time.
diff --git a/py/mpthread.h b/py/mpthread.h
index 498380a..a92f2d0 100644
--- a/py/mpthread.h
+++ b/py/mpthread.h
@@ -36,7 +36,9 @@
 #include <mpthreadport.h>
 #endif
 
-mp_state_thread_t *mp_thread_get_state(void);
+struct _mp_state_thread_t;
+
+struct _mp_state_thread_t *mp_thread_get_state(void);
 void mp_thread_set_state(void *state);
 void mp_thread_create(void *(*entry)(void*), void *arg, size_t stack_size);
 void mp_thread_mutex_init(mp_thread_mutex_t *mutex);