Added custom exception classes for Ghost and use of them

I've added two custom exceptions: `ghost.Error` and `ghost.TimeoutError`. The first is a generic exception to be used inside the library while the other one is for the time out errors.

The benefit of using those is that the library users can catch relevant exceptions, instead of having to catch the general `Exception`.