Basically rewrote a lot of code.

This is ultimately in response to issue#6, but I took it further and started to change the classes etc to be more object oriented.

You can see how methods are called in the readme. One of the tests is currently failing because the error notification code needs to be revamped.

We also need to finish writing the methods for timeline for the readme to be truthful.

Overall I think this is a move in the right direction.