main catches and handles "std::exception" and "...", returning 1

Note: I added this after reading a blog post:

http://akrzemi1.wordpress.com/2011/10/05/using-stdterminate/

"C++ allows compilers or runtimes not to call destructors in such cases in order for them to be able to provide more efficient implementations of exception handling mechanism. Therefore, programmers are often encouraged to wrap function main with exception handlers that catch every possible exception:

int main() 
try {
    // do what you want
}
catch( std::exception & exc ) {
    // use exc.what()
}
catch( ... ) {
    // ensure destuctors of auto objects are called
}
Not to (or, not only to) prevent calling std::terminate, but to make sure all destructors of automatic objects have been called."

I'm not sure if this is accurate info, but after reading it this commit
seemed like a good idea, and I don't see that it could be harmful.
Seemed like a good idea to make a PR anyways though.

The purpose of this is so that even when we request the program
to be terminated with "throw 42", the exception will be guaranteed
to propogate back to main and all destructors will be called along
the way. This way, if the program requested a socket for example,
the socket will still be released when we terminate unexpectedly,
and not need to be timed out by the OS, so it would be more 
convenient after a crash or after testing, for example.