Batman.Query

I've extracted this behaviour from @angelini pull request for the new pagination system (which was cancelled): https://github.com/batmanjs/batman/pull/920 I'm very enthusiastic about the chainable query system which reflects ActiveRecord well. I think it would serve well in batman.

## Original pull request (#920)

__where__
```coffeescript
Order.where(type: 'internal')
```

__limit__ and __offset__
```coffeescript
Order.limit(10).offset(20)
```

__order__
```coffeescript
User.order('created_at DESC')
```

__distinct__
```coffeescript
Order.distinct()
```

__scoping__
```coffeescript
class @Order extends Batman.Object
  @internal: -> @where(type: 'internal')
```

__chaining__
```coffeescript
Order.where(type: 'internal').not(id: 5).order('created_at DESC')
```

## Added behaviour:

__only__
```coffeescript
Order.limit(10).offset(20).only('limit')
```

__except__
```coffeescript
Order.limit(10).offset(20).except('offset')
```

__URL params__
```coffeescript
orders = Order.where(type: params.type)

orders.observe 'params', (queryParams) ->
  # Do something with queryParams

orders.load (err, records) =>
  @set('orders', records)
```

What do you guys think? @angelini I hope you don't mind I extracted your code. All credits go to you.
If you use `Batman.StorageAdapter` instead of just `StorageAdapter`, you'll get an automatic link to the StorageAdapter page