Automatically track per-file dependencies

This is enabled for platforms/compilers that support the -MMD
option, which creates a dependency file named out.d when compiling
to a file named out.o, only including local, not system headers.

The additional -MP option adds phony targets for all included
headers, to avoid having make error out due to "no rule to make
target foo.h" if a header is renamed/removed.

This makes sure that all the right files are rebuilt if a header
is changed, avoiding the need for a full rebuild if only a few
files are affected.
Attempt to detect OS arch(32/64 bit) on most platforms

Attempt to automatically detect 32bit or 64bit OS architecture in Makefile,
unless user has specified preference on the command line.
Updated travis.yml to explicitly build for 32bit architecture
Merge pull request #246 from varunbpatil/detect_arch

Attempt to detect OS arch(32/64 bit) on most platforms
Merge pull request #198 from mstorsjo/makefile-deps

Automatically track per-file dependencies
Merge remote-tracking branch 'upstream/master' into travis.osx