Fix operators that operate on unary-negated expressions.
Suppress some MSVC specific warnings.
Fix some bugs exposed by above changes and add new test cases.
Fixes #8176.

svn path=/trunk/boost/multiprecision/; revision=83227