Dino Dex Second Refactor

Changes based on comments from first refactor.  I didn't touch the Main class, but I changed it to Example just to make it clear this is not really part of the code.
If you're going to set them using `assign_attributes` anyway, don't bother setting empty values here. If the idea is to have a default (empty string is not a great default), then use `self.name = attributes[:name] || ""` etc etc