Add useProjection to Session
  this function specifies a projection to be used for find and query operations

TableMapping.js:
  add relationship property to relationship mappings
  add mappingId to mapped domain objects to keep track of projections

Session.js:
  implement useProjection by delegating to UserContext
  two parameters (projection, callback) 

UserContext.js:
  fix a bug in promises where if the function is rejected immediately,
    and then does not include a rejected callback,
    a misleading error would occur
  useProjection is asynchronous; verifies the projection and all of the domain objects
  returns a promise and allows use of callback
  useProjection validates the projection
  manages a list of projections and an index to the list
  index specifies which projection is being validated
  for each projection, call getTableHandler
    then for each field, verifies that the field exists
    and for each relationship, verifies that the relationship field exists
    and adds the relationship to the projections to validate
  make sure there are no loops in the projection to allow JSON to serialize the result
  once the projection is validated, save it using the mappingId of the domain object

composition/lib.js:
composition/RelationshipMappingTest.js
  refactor constructors and mappings for shopping cart test schema

composition/ProjectionTest.js:
  add projection for Customer
  call find then verify the complete projection was returned

DBTableHandler.js:
  allow relationship fields to be put into fieldNameToFieldMap
  no column is associated with the relationship
Optional delays both before & after jscrund run
merge