Summary
-------

Experimental ORM Query object

The idea is to make RQL requests building simpler, and all with pythonic
syntax.

It borrows a lot from the SQLAlchemy ORM.

Examples
--------

Basic query with no filtering

::
    CWUser = vreg['etypes'].etype_class('CWUser')
    CWGroup = vreg['etypes'].etype_class('CWGroup')

    q = req.query(CWUser)
    assert q.torql(), ("Any X WHERE X is CWUser", {})

    q.all()


Same with attribute eagerloading::

    q = req.query(CWUser).eagerload('login')


With filtering::

    q = req.query(CWUser)
    q = q.filter(CWUser.in_group.filter(CWGroup.name == u'managers'))


More complex filtering::
    
    import datetime as dt

    q = req.query(CWUser)
    q = q.filter(
        (CWUser.creation_date >= dt.date.now() - dt.timedelta(30))
        & CWUser.in_group.filter(
            (CWGroup.name == u"users")))
