Add size class computation capability.

Add size class computation capability, currently used only as validation
of the size class lookup tables.  Generalize the size class spacing used
for bins, for eventual use throughout the full range of allocation
sizes.
Use KQU() rather than QU() where applicable.

Fix KZI() and KQI() to append LL rather than ULL.
Fix thd_join on win64
Don't use msvc_compat's C99 headers with MSVC versions that have (some) C99 support
Add -FS flag to support parallel builds with MSVC 2013
Make in-tree MSVC builds work
Fix fallback lg_floor() implementations.
Try to use __builtin_ffsl if ffsl is unavailable.

Some platforms (like those using Newlib) don't have ffs/ffsl.  This
commit adds a check to configure.ac for __builtin_ffsl if ffsl isn't
found.  __builtin_ffsl performs the same function as ffsl, and has the
added benefit of being available on any platform utilizing
Gcc-compatible compiler.

This change does not address the used of ffs in the MALLOCX_ARENA()
macro.
Don't catch fork()ing events for Native Client.

Native Client doesn't allow forking, thus there is no need to catch
fork()ing events for Native Client.

Additionally, without this commit, jemalloc will introduce an unresolved
pthread_atfork() in PNaCl Rust bins.
Fix -Wsign-compare warnings
Fix -Wsometimes-uninitialized warnings
Add check for madvise(2) to configure.ac.

Some platforms, such as Google's Portable Native Client, use Newlib and
thus lack access to madvise(2).  In those instances, pages_purge() is
transformed into a no-op.
Configure for Rust.