Cast void pointers explicitly

Needed for C++ compatibility.
Rename variables named 'new'

Needed for C++ compatibility.
Create html_unescape.h as ANSI C

Pass -L ANSI-C to gperf to create more compatible code.
Use named enum types

Needed for C++ compatibility.
Remove unneeded #includes

Fixes cross-platform issues.
Don't use variable-length arrays

They're not supported by MSVC.
Probe for stdbool.h

Let cmake create a cmark_config.h file to deal with platforms missing
stdbool.h.
Declare all functions as extern "C"
Compile as C++ under MSVC
Remove unneeded va_copy

va_copy isn't needed here. See
http://stackoverflow.com/questions/26953289

Remove it because it isn't part of C89 and not implemented by MSVC.
Feature test for __builtin_expect
Look for re2c in path when compiling with MSVC
Feature test for GCC attributes
Set correct binmode in mkcasefold.pl

This makes sure that UNIX line endings are generated when running
mkcasefold.pl on Windows.
Add Makefile and wrapper for nmake
Move inline function definitions to header files

Inline functions must be defined in header files in order to be inlined in
other compilation units. This also fixes the MSVC build where out-of-line
versions weren't created and allows to remove the -fgnu89-inline flag.