add_dependson and Dependent class are defined to inject new dependencies...

... into a rule

This PR solves two issues: #77 and #82. To solve #77, each rule function manages `dependson` variable recursively, which is expanded in the constructor of Rule. To solve #82, `add_dependson` decorator and an abstract class `Dependent` are defined.