added Substitution class that handles composition
Pattern#match now returns Substitution or nil
specs updated