Implement proper exception handling for GoogleCalendarManager

Detailed Changes
-  Proper exception handling between GooCalBackend and GoogleCalendarManager
-  Removed the Bundle object in error handling, replaced with exception
throwing
-  Add and Delete methods (public API for GoogleCalendarManager) throw an
   UnknownHostException to database if the user is not online, with a
   message explaining the meaning of the UnknownHostException.

Why are these changes necessary?
-  Proper use of exceptions are expected in good quality code produced by
   quality software engineers
-  Exceptions are meant to be used for the purpose of signalling errors
   between classes, and hence, we have decided to apply that use
-  The use of the Bundle object was clumsy and cluttered, and increased
   coupling to an extent which was not necessary, as a more efficient
   method of passing error messages could be implmented through the use of
   exceptions

How does this address the issue?
-  The Bundle object is now used solely for transferring of task details
   from Parser to Logic. It is no longer used for tranferring error
   messages between classes.
-  This reduces the dependencies and coupling between classes and the
   Bundle class, and increases cohesion, because it is strange to think of
   Bundle handling error messages as well as handling the passing of task
   data.

What side effects does this change have?
-  GoogleCalendarManager no longer returns a Bundle object to Database.
   (it now returns void)
   Therefore, the code in Database has to be modified to accept the new
   return type of the public API of GoogleCalendarManager.