With and Joins Ordering

Allow for an array syntax for withs and joins:

```javascript
{
  with: [
    { alias: 'a', type: 'select', table: 'users' }
  , { alias: 'b', type: 'select', table: 'a' }
  ]
, type: 'select'
, table: 'b'
, joins: [
    { alias: 'groups', type: 'left', on: 'groups.user_id': '$b.id$' }
  , { alias: 'others', type: 'left', on: 'others.group_id': '$groups.id$' }
  ]
}
```