error codes for configure edge cases (bug 1074533)

the ``if ... not is_simulation`` prevents it. It's a bit hairy. However, it felt better to make ``configure_transaction()`` return explicit results and let the calling code deal with reaction to the results. 

Introducing error codes was mainly just a way to pass back any possible configuration errors so they can be reported in the UI. In a lot of cases there will not be errors even if no configuration was performed.