Add pydfu.py to the micropython tree. Use dfu_util bgy default

You can do:

make USE_PYDFU=1 deploy

to use pydfu.py
tools, pydfu: Some fixes to support Python 3.
py: Fix smallint modulo with negative arguments.

Addresses issue #927.
extmod: Add uheapq module.
py: Clean up edge cases of malloc/realloc/free.
py: Use MP_OBJ_NULL instead of NULL in a few places.
py: Add builtin memoryview object (mostly using array code).
py: Properly free string parse-node; add assertion to gc_free.
stmhal: Use OSError with POSIX error code for HAL errors.

Addresses issue #921.
stream: Add optional 2nd "length" arg to .readinto() - extension to CPython.

While extension to file.readinto() definition of CPython, the additional arg
is similar to what in CPython available in socket.recv_into().
stmhal: Fix pin af definition: TIM2_CH1_ETR -> TIM2_CH1/TIM2_ETR.
stmhal: Use stream's readinto.
py: Use mp_uint_t where appropriate in stream functions.
py: Fix debug-printing of bytecode line numbers.

Also move the raw bytecode printing code from emitglue to mp_bytecode_print.
py: Improve memory usage debugging; better GC AT dumping.

In unix port, mem_info(1) now prints pretty GC alloc table.
USB CDC ACM: populate bFunction{Class,SubClass,Protocol} in the interface association descriptor
stmhal: Fill in USB class/subclass/proto for CDC+HID device.

Also change HID device from keyboard to mouse (should have been mouse
all along).
stmhal: Change fresh boot.py and main.py to use \r\n newlines.

This is so it's compatible with Windows.
unix: Allow -X heapsize= option take numbers with K & M suffixes.

For kilobytes and megabytes respectively.
py: Store bytecode arg names in bytecode (were in own array).

This saves a lot of RAM for 2 reasons:

1. For functions that don't have default values, var args or var kw
args (which is a large number of functions in the general case), the
mp_obj_fun_bc_t type now fits in 1 GC block (previously needed 2 because
of the extra pointer to point to the arg_names array).  So this saves 16
bytes per function (32 bytes on 64-bit machines).

2. Combining separate memory regions generally saves RAM because the
unused bytes at the end of the GC block are saved for 1 of the blocks
(since that block doesn't exist on its own anymore).  So generally this
saves 8 bytes per function.

Tested by importing lots of modules:

- 64-bit Linux gave about an 8% RAM saving for 86k of used RAM.
- pyboard gave about a 6% RAM saving for 31k of used RAM.