Separating DOI Assignment behavior from structure

By atomizing DOI assignment and structure the parts are, in theory,
able to better move independently. I am especially happy about
removing the after_save callbacks that are pernicious.

Closes nblid/planning#274