Added support for $limit, $skip and $sort aggregation, along with $setAsDefault

__Sort/Skip/Limit Example:__
Current documents:
```
{name: 'john', age: 10}
{name: 'doe', age: 8}
{name: 'eldad', age: 26}
```
Set aggregation:
```remove
db.aggregate({$sort: 'age', $skip: 1, $limit: 1});
```
Find:
```
db.find({}, function(err, docs) {
 doc[0]; //{name: 'john', age: 10}
})
```
Change aggregation:
```
db.aggregate({$sort: 'age', $skip: 0, $limit: 2});
```
Find:
```
db.find({}, function(err, docs) {
 doc[0]; //{name: 'doe', age: 8}
 doc[1]; //{name: 'john', age: 10}
})
```
$sort can also accept multi/nested paremeters:
```
db.aggregate({$sort: {age: 1, name: -1, some.nested.field: 1})
```
$sort/$limit$skip options can accept options as MongoDB's API allow:
http://docs.mongodb.org/manual/reference/operator/aggregation/


__setAtDefault Example__
Current documents:
```
{name: 'john', age: 10}
{name: 'doe', age: 8}
{name: 'eldad', age: 26}
```
Update:
```
db.aggregate({$sort:age});
  
db.update(
 {},
 {$setAsDefault: {age: 99, lastName: 'dummy'}},
 {upsert: true, multi: false},
   function(err, updatedNum) {
      db.find({}, function(err, docs) {
         docs[0]; //{name: 'doe', age: 8, lastName: 'dummy'}
         docs[1]; //{name: 'john', age: 10}
         docs[2]; //{name: 'eldad', age: 26}
      }
   }
)


```