Make MicroPython compile with Visual Studio 2013

These are mostly minor changes to accomodate for what the MS compiler can't do,
and for what the Windows SDK doesn't have.
Note this is purely about compilation, no guarantees for what happens at runtime.
Changes include:
- there's no __attribute__ keyword, so guard it in ifdef/endif pairs
- add some missing includes to nlr.h
- can't have zero-sized arrays in a struct, so define the size based on compiler
- can't have variable-length arrays on the stack, use malloc/free
Convert slashes in main()'s argument to unix-style ones, else nothing runs
Fix floating point formatting

- default output format has 3 digits for the exponent, Python wants 2
- provide a platform specific function MICROPY_INIT_FUNC to allow
  setting such behaviour once at the start of the program
- MS snprintf implementation does not know %F so use %f instead
Do not allow calling read() on a closed file descriptor

This fixes the io/file-with.py test