Implement Trip object and DAO operations, refactor some CRUD logic

Adds the Trip, which is a collection of Points, and the highest level
of organization in the model. Create, read, and update operations now
only affect one level of organization, e.g. reading a Point doesn't
read all of it's MediaItems. Delete affects all lower levels to maintain
referential integrity in the database.