docs: select: Describe extra details.
py: Use __hash__ method if a type defines it
tests: Add test for hash of user defined class.
Document parameter "data" of i2c.mem_read() more clear

Hi,

i would like to add a little clarification to the parameter "data" of i2c.mem_read(): I misunderstood 

        ``data`` can be an integer or a buffer to read into

as "i can give a integer variable to read a integer into" .  This pull-request adds the following clarification:

         ``data`` can be an integer (number of bytes to read) or a buffer to read into

Thanks for your great work!

Best wishes,
Matthias
docs: Add optional sphinx_rtd_theme; add docs build instructions.

The sphinx_rtd_theme is used by ReadTheDocs to render a pretty looking
documentation.  If you have this theme installed locally then your
locally-compiled docs will look exactly like the published
documentation.   Otherwise it falls back to the default theme.
stmhal: Fix HAL error raising; make test for it.

Addresses issue #968.
stmhal: Improve CAN init so that it can take sjw, bs1, bs2 args.

Also update docs to explain how CAN baudrate is determined.
docs: Fix RTD build configuration.

ReadTheDocs needs the root directory in its search path so it finds
topindex.html.
Disable stack check
py: Make import recognize and load native modules (.pyd or .so files)

Simply check if a .pyd or .so file exists on the Python search path
(if a .py file if not found) and call a function to get a module from it.
Implement this LoadDynLib function for msvc.
msvc: Build seperate micropython dll and executable

- export some core functions using exports.def, export constants/data using the
typical dllexport (exporting data using .def file yields multiple copies of data).
- rename micropython project to micropythoncore and have it produce a dll + import lib
- add new micropython exe project (which just calls the exported main from the dll)
- add run.h/run.c which allow for easy embedding
- add property sheet for external modules