Add context merge type

Added a configurable context merge type that allows control over how rules are merged when contexts are added.

Allowed merge types are as follows:

OVERWRITE_LEFT: As contexts are traversed in getRulesInContext, their rules will override rules on existing keys

OVERWRITE_RIGHT: Existing rules will persist, duplicate keys in context rules will be ignored

MERGE: Recursively merge rules