py: Fix bug with right-shifting small ints by large amounts.

Undefined behavior in C, needs explicit check.
stmhal: Improve pyb.freq to allow 8 and 16MHz (not usable with USB).

Also restrict higher frequencies to have a VCO_OUT frequency below
432MHz, as specified in the datasheet.

Docs improved to list allowed frequencies, and explain about USB
stability.
unix: Provide "fast" target to build interpreter for benchmarking.

This build is primarily intended for benchmarking, and may have random
features enabled/disabled to get high scores in synthetic benchmarks.
The intent is to show/prove that MicroPython codebase can compete with
CPython, when configured appropriately. But the main MicroPython aim
still remains to optimize for memory usage (which inevitibly leads to
performance degradation in some areas on some workloads).
docs: Make custom index page; add more docs.
docs: Disable logo and add spacing to top index.
docs: Fix typo in Fading LEDs
Merge branch 'szinya-master'
py: Fix builtin callable so it checks user-defined instances correctly.

Addresses issue #953.
py: Explicitly set uninitialised struct member to false.

Uninitialised struct members get a default value of 0/false, so this is
not strictly needed.  But it actually decreases code size because when
all members are initialised the compiler doesn't need to insert a call
to memset to clear everything.  In other words, setting 1 extra member
to 0 uses less code than calling memset.

ROM savings in bytes: 32-bit unix: 100; bare-arm: 44; stmhal: 52.
docs: Adjust table spacing in topindex page.
docs: Add skin imgs; change external links to micropython.org/resources.
docs: Add pdf size info to datasheet links.
docs: Add debounce tutorial; order Pin methods; add pull resistor info.
docs: Add links from quickref to pyb classes.
docs: Update front page to display date of last update.
docs: Bump version to 1.3.6.

This needs to be done before actually tagging the new version.
unix: fast: Set initial module dict size big to have high pystone score.

For this, introduce MICROPY_MODULE_DICT_SIZE config setting.
py: Allow +, in, and compare ops between bytes and bytearray/array.

Eg b"123" + bytearray(2) now works.  This patch actually decreases code
size while adding functionality: 32-bit unix down by 128 bytes, stmhal
down by 84 bytes.
py: Allow bytes object as argument to some str methods.

This turns failing assertions to type exceptions for things like
b"123".find(...).  We still don't support operations like this on bytes
objects (unlike CPython), but at least it no longer crashes.
py: Fix some macros defines; cleanup some includes.