DriveGraph:
(1) Add preliminary implementation of expo backoff. But there's gotta be a better way of designing this so that I don't need to implement the same expo backoff code several times.
(2) Change the corresponding section in order to cope with the changes made to DriveNode.

DriveNode: Now DriveNode becomes an interface which Node and RootNode implement.
Node: This is the old DriveNode class with some object attributes removed (those managed by rootNode, such as the service variable).

RootNode: extends the new DriveNode class and add a method to get service.

Others: update copyright statement.