Idempotent cleanup

See:
 * http://doc.zeroc.com/pages/viewpage.action?pageId=2523166, "Why is it important to use idempotent...?"
 * http://doc.zeroc.com/display/Ice/Operations#Operations-IdempotentOperations

Some of the `.ice` files were missing the keyword `idempotent` on remote methods (i.e. methods on interfaces). For methods with `idempotent`, the Ice runtime will retry methods:

 > For idempotent operations, on the other hand, the client-side run time can attempt to re-establish a connection to the server and safely send the failed request a second time. If the server can be reached on the second attempt, everything is fine and the application never notices the (temporary) failure. Only if the second attempt fails need the run time report the error back to the application. (The number of retries can be increased with an Ice configuration parameter.)

**Code review** will involve some discussion on which methods match the required semantics

**Testing** will likely involve simply leaving this in the merge build for some time and hoping for improved stability.