Specify #add.
Specify #remove.
Fully specify Composite.
Implement ListComposite.

ListComposite is a concrete implementation of Composite backed by an Array.

Spec pending.
Begin speccing ListComposite.
Fill out specification for ListComposite.
Rename ListComposite to ArrayComposite.
Implement HashComposite.
Fix attr_reader typo.
Include HashComposite in compo.rb.
Make #children public.
Specify HashComposite.
Fully document HashComposite.
100% YARD coverage.
Add Enumerable for Composite.

Composite#each delegates to Composite#children#each by definition.
Introducing NullComposite.

This is a fake implementation of the Composite interface that always
fails to add/remove and always returns the empty hash for #children.

This is intended to be used for leaves.
Introducing Movable.

Movable is a mixin that defines a function, #move_to, which removes the object
from its current parent and adds it to a new one.  It expects the including
class to implement #parent.
Put Movable in the correct module.
Movable typo.
Specify Movable.