Use extend when it makes sense to do so

Hiding includes in a singleton block can be confusing.

Signed-off-by: Stephen Celis <stephen@stephencelis.com>
Add persistence logic

ActiveModel is often concerned with persistence (and ActiveModel::Model
actually defines a #persisted? method that returns false by default).

This gives us #new_record? and #destroyed?, and redefines #persisted? to
account for both. It also adds :create and :update callbacks.

Signed-off-by: Stephen Celis <stephen@stephencelis.com>