Co-exist with C++ (issue #85)

Fixed conflicts with C++ bool/true/false via new MP_BOOL, MP_TRUE and MP_FALSE.
Changed mp_obj_base_t declaration, and made .member a pointer instead of dynamic array.
Revised function declaration macros, adding casts to correct types before cast to void*.