- fixing document merging

- moving merging logic into document class
- added test
@bryevdv @mattpap please review
Since `other_pcs` is not actually being used for anything else, and we just want to know if there are any PC's that "don't belong" maybe the simple loop is clearer?
```
for x in self._models.values():
    if x.__view_model__ == 'PlotContext' and x._id != value._id:
        raise DataIntegrityException("too many plot contexts found")
```