Move BITS_PER_BYTE, BITS_PER_WORD to mpconfig.h for reuse.
Add WORD_MSBIT_HIGH define - machine_int_t with the highest bit set.
Add proper checks for fits-in-small-int. Make it reusable.

We likely should make mp_obj_new_int() inline, and rely on its
encapsulated check rather than inline checks everywhere explicitly.

Also, parser for big small int values is still broken.
Parse long Python ints properly.

Long int is something which doesn't fit into SMALL_INT partion of
machine_int_t. But it's also something which doesn't fit into
machine_int_t in the first place.
Add framework to support alternative implementations of long int Python type.
Merge pull request #160 from pfalcon/elaborate-int

Elaborate small-int/long-int