[#8] Associations that alias other properties

Associations can now be defined to alias another property on the model
object. Aliasing a property means the model will track any changes to
that property and will sync those changes with the association property
from that point forward.

This is most useful for exposing proxy behavior for properties that are
essentially storing identifiers and are suffixed with their identifier
type, which is common in api responses that reference other resources
(e.g. a new property `user` can alias the property `user_id`).