Fixed issue where addRule() had an undesirable knock-on effect of making
changes to the rule being added, as such getRule() did not return the
object in the same state it was supplied with using addRule()