Refactor ask()

TODO: rework and rebase
This branch contains a few refactorings related to ask():

* Extract the version of ask() used in compute_known_facts into a simple function called `ask_direct` (@haz: any idea for a better name?) and use it inside ask().
* Move `eliminate_assume` to `ask.py` and rename it `_extract_facts`, cf. discussion in #289.
* Disallow specifying the "key" as a string, cf. [issue 2338](http://code.google.com/p/sympy/issues/detail?id=2338)
* Handle correctly assumptions of the form `P(x) | Q(y)`.