use query.selectable instead of query.statement in count helper

This is a better fix for #309.

Using `query.statement` generates a warning about not having labels; while investigating this warning, it seemed like `query.statement` is more for internal SQLAlchemy use, and `query.selectable` was what we should be using. In addition, `selectable` does not raise these warnings, and also does not suffer from the problem with joins that `statement` did, fixed in #309.

This is the warning that was raised, in `tests.test_views.TestAssociationProxy.test_num_results`:

```
/Users/matt/programs/flask-restless/SQLAlchemy-0.9.4-py2.7.egg/sqlalchemy/sql/base.py:490: SAWarning: Column 'id' on table <sqlalchemy.sql.selectable.Select at 0x1102cced0; Select object> being replaced by Column('id', Integer(), table=<Select object>, primary_key=True, nullable=False), which has the same key.  Consider use_labels for select() statements.
  self[column.key] = column
```
allow disabling deep results per-request

originally by @johaness
allow fine grained control of relations included in output
bump to 1.current-upstream-version
support deep parameter in PUT/PATCH

follow up to d85b91e0d5d133ddb989d31ce98ae4f385d2432f and dc06ae4ae75994d354db8bbe62532bd04da0b5ac
search: joined load of all deep relations
limit joins to 3 levels
bump version number to Major.minor.revision.2