Removing unnecessary tests
Adding Session parameter to Operation.execute() and consolidating calls to it to a single method.
Added Connection and ServerDescription parameter to Protocol execute and executeAsync methods and removing responsibility of Protocol implementations to optionally close the connection.