Further improvements to expression handling

  - Renamed ExpressionNode.prepare() to resolve_expression()
  - Anything with contains_aggreagte() and resolve_expression() methods
    can be used as the rhs value in .filter() clauses.
  - F-objects aren't ExpressionNode instances any more. Instead
    F-objects will resolve to ExpressionNode through
    resolve_expression()
  - Added a new Mixin class CombinableMixin. Both F and ExpressionNode
    inherit CombinableMixin
  - Removed ExpressionNode.source_expressions. The same functionality
    is now achieved through ExpressionNode.get_source_expressions()
    and ExpressionNode.set_source_expressions()
  - Changes to summarized aggregate handling
  - The get_prep_lookup() method will no longer call .prepare(), instead
    it will only check for existence of ._prepare() method and call that
    if it exists.