Added handling for string based errors

Hi,  

In certain circumstances the object returned from recover() ``err := recover();`` is not always an error type, therefore when it was being cast to error the code would panic.  

To work around this I have added a new method ``func getErrorMessage(err interface{}) string`` this checks the type of the object returned by recover and handles accordingly.  I have tested both instances of this and it seems to work just fine.

Kind regards,

Nic