sympify: Refactoring and bugfixes

Changes:

- Fixed [#2663](https://code.google.com/p/sympy/issues/detail?id=2663) and [#3423](https://code.google.com/p/sympy/issues/detail?id=3423)
    - Keyword arguments and attribute access should now work with `sympify`
- Refactored `parse_expr`
    - Accepts dictionary of globals
    - Split into two functions, `stringify_expr` and `eval_expr`; `parse_expr` combines the two
    - API is mostly unchanged
- `sympify` API unchanged
- Added documentation & tests for changes