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

Fixed conflicts with C++ bool/true/false via new MP_BOOL, MP_TRUE and MP_FALSE.
- note: reverted this part back to using std bool instead
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*.
Connect missing list.insert method and suppress one warning in objlist.c.