fixed ProcessingException message serialization
Merge pull request #310 from andviro/my-patches

fixed ProcessingException message serialization
Merge pull request #309 from goodscloud/fix-count-helper

Only use count() optimization if there are no joins
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
Raise exception for bad searches

... so that we can register an error handler in Flask to show
helpful response messages to API consumers
Support Python 3.3
bump version number to Major.minor.revision.3