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

The purpose of this is so that even when we request the program
to be terminated with "throw 42", the exception will still
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,
so it might be slightly more convenient for testing.
Add also exception handlers for strings thrown as exceptions

From irc:

<gfgtdf> iceiceice: i tink you should also catch for char* there,
to give the correct message in case of
'throw "asdadsad"; 'statemant
Merge pull request #194 from cbeck88/add_catch_all_to_main

main catches and handles all exceptions last, returning 1

This is to ensure that all resources are freed even after a crash.