Begin rope implementation, add empty class/tests
Add basic constructors to Rope and Rope::Node
Add size method to rope.
Add to_str method to rope.
Add randint function for rope fragmentation op
Add recursive weight and str methods.

The string is now split up into nodes along the rope, and
the size and to_str() methods now recurse along the tree
to calculate these quantities.
Add Rope::at for indexing a rope. Update weight.

Add recursive method for indexing a rope. Move
weight update logic into Node::update_weight.
Remove Node::dirty_ flag for updating the weight
lazily, too early optimization to know where to place it.
Add rope tests for concat/split.