py: For malloc and vstr functions, use size_t exclusively for int type.

It seems most sensible to use size_t for measuring "number of bytes" in
malloc and vstr functions (since that's what size_t is for).  We don't
use mp_uint_t because malloc and vstr are not Micro Python specific.
Updated CODECONVENTIONS to clarify use of integer types.
py: Tidy up exception matching; allow matching of tuple of exceptions.

Addresses issue #864.
tests: Add test for exception matching of a tuple of exceptions.