Add Aggregate implementation

closes #1400
refactor aggregation
aggregation; combine project + select

adds select syntax to project and removes select
tests; confirm aggregate().exec returns promise