begin work on implementing smart diffs

for example:
<?php
$diff = $item->diff($revisionnumber);
if (isset($diff['app-reference'])) {
    foreach ($diff['app-reference']->deleted as $ref) {
        $ref->fields['circular']->remove($item);
    }
    foreach ($diff['app-reference']->added as $ref) {
        $ref->fields['circular'][] = $item;
    }
}
?>

99% of that logic is unimplemented.