Improve handling of problems with complex field type
The reduction and norms should always be real-valued, but none of the backends currently extract the real type from the field type. This patch does at least change the interface to do so correctly.