Issue #3773: Error in acos(x).rewrite(atan)

Fixed acos(x).rewrite(atan) so that it accepts symbolic inputs.
Issue #3773: Added test case to check acos(x).rewrite(atan)

Added a test case to test_trigonometric to make sure
acos(x).rewrite(atan) produces the correct formula 2*atan(sqrt(1 -
x**2)/(1 + x))
Changed acos.rewrite(atan) to be more robust

The previous implementation of acos(x).rewrite(atan) produced outputs
which did not match with corresponding values from acos(x). A more
robust formula is used here to accommodate these errors.
Changed the test for acos(x).rewrite(atan)

Changed the test for acos(x).rewrite(atan) to accommodate the new
rewrite function
Merge pull request #2033 from v9joshi/3773_acos

Issue #3773: Error in acos(x).rewrite(atan)
Add Varun Joshi to the AUTHORS/aboutus. Welcome to SymPy!
MatrixExprs use real/integer/complex assumptions
move test_closed_group from sets to __init__
add Q.real/integer/complex_elements predicates