Ported Person model from curate_nd project.  issue ndlib/planning/#100

This is mostly a straight port of the code from curate_nd, except that I pulled a bunch of the person-related methods out of the user class into their own concern (with_associated_person).