Add `select` clause to the criteria object

This commit adds a `select` clause to the criteria object which allows for
including only specific model attributes within the query result. It accepts
the follwing syntax:
  `.select(['attr1', 'attr2'])`
  `.select('attr1', 'attr2')`
  `.select({attr1: 1, attr2: 1})`
Add `prune` clause to the criteria object

This commit adds a `prune` clause to the criteria object which allows for
excluding model attributes from the query result. It accepts the follwing
syntax:
  `.prune(['attr1', 'attr2'])`
  `.prune('attr1', 'attr2')`
  `.prune({attr1: 1, attr2: 1})`