Add -Wpointer-arith flag to prevent problems with pointer arithmetic on void*
Fix errors after enabling -Wpointer-arith
py: Allow to override port config file and thus have >1 configs per port.

Use it like:

make CFLAGS_EXTRA='-DMP_CONFIGFILE="<mpconfigport_my.h>"'
moductypes: Make sure we can apply .sizeof() to all aggregate types.

Before, sizeof() could be applied to a structure field only if that field
was itself a structure. Now it can be applied to PTR and ARRAY fields too.
It's not possible to apply it to scalar fields though, because as soon as
scalar field (int or float) is dereferenced, its value is converted into
Python int/float value, and all original type info is lost. Moreover, we
allow sizeof of type definitions too, and there int is used to represent
(scalar) types. So, we have ambiguity what int may be - either dereferenced
scalar structure field, or encoded scalar type. So, rather throw an error
if user tries to apply sizeof() to int.
moductypes: When dereferencing a field which is array of uint8, use bytearray.

Because bytearrays are much friendlier to work with, e.g. they can be printed
easily.
moductypes: Add test for accessing UINT8 array.
moductypes: Make .sizeof() work with bytearrays.
stmhal: Fix ptr arith in CC3000 code; enable network build in travis.
py: mp_obj_str_get_str(): Work with bytes too.

It should be fair to say that almost in all cases where some API call
expects string, it should be also possible to pass byte string. For example,
it should be open/delete/rename file with name as bytestring. Note that
similar change was done quite a long ago to mp_obj_str_get_data().
objstr: Allow to convert any buffer proto object to str.

Original motivation is to support converting bytearrays, but easier to just
support buffer protocol at all.
mpz: Fix 64bit msvc build

msvc does not treat 1L a 64bit integer hence all occurences of shifting it left or right
result in undefined behaviour since the maximum allowed shift count for 32bit ints is 31.
Forcing the correct type explicitely, stored in MPZ_LONG_1, solves this.
stmhal: Added support for extended CAN frames.
tests: Added and adapted CAN tests for extended messages
stmhal: Improve CAN print function.
stmhal: Add ioctl to USB_VCP object, so it works with select.

This patch also enables non-blocking streams on stmhal port.

One can now make a USB-UART pass-through function:

def pass_through(usb, uart):
    while True:
        select.select([usb, uart], [], [])
        if usb.any():
            uart.write(usb.read(256))
        if uart.any():
            usb.write(uart.read(256))

pass_through(pyb.USB_VCP(), pyb.UART(1, 9600))
stmhal: Implement support for RTS/CTS hardware flow control in UART.

This is experimental support.  API is subject to changes.  RTS/CTS
available on UART(2) and UART(3) only.  Use as:

    uart = pyb.UART(2, 9600, flow=pyb.UART.RTS | pyb.UART.CTS)
docs: Add tutorial for fading LED using PWM, with fritzing image
docs: Fix links to images and other parts of the docs.
stmhal: Update some inlined docs for network and CAN.
tools: Make gendoc.py able to output RST format.