Add activemodel dirty tracking to contacts, allowing us to say when it changes

Setting the dirty flag has to be done manually for now.