Raise an exception on remove when context is not present.
Set requires context for removes, fake context in unit tests.
Remove dirty_value accessors
Check that removals on maps and sets w/o context raise exceptions
Fix semantics according to agreed upon terms

- (Add | Update) and Remove no longer affect each other
- Nested discards/removes require context at the top-level
- Use more efficient 'modified' callback when extracting nested ops
Add @macintux's map example 1
Remember to store and correct indentation of the method
Add more @macintux tests and fix failure to send context over HTTP
Use return_body in the tests to exercise the encoding path