Add update() to RuleSet to correctly merge.

The update() method now preserves rules from both parents, rather than
overwriting as in a normal dict. Also changes setitem to be more like a normal
dict.