Revert "Revert "use try/catch instead of SETJMP/LONGJMP""

This reverts commit 13817f17adb1461ef7afda52dd166436dd20a76c.
Fix build after switching to c++ compile.
Automatic source format enforcement.
Fix crc table in 32bit mode.
Update travis config to C++ environment.
Merge pull request #82 from sunyc/master

Switch to c++ compile mode, fixed build. Also include "try/catch" patch by wodan.