Remove Doubles on multiple objects
Firstly operators don't work in a usual create class instance way... the code below

myobject = remDoubles()
myobject.execute()


Will NOT work.

Have a look at the Hello World Example  The HelloWorldOperatoroperator class is defined, registered (known to bpy.ops), then called using bpy.ops. "plus" the bl_idname.  

In your example you would 

bpy.utils.register_class(RemoveDoublesMulti) # changed to camel-case name

# test call to the newly defined operator
bpy.ops.object.remove_doubles_multi()


Using a bmesh approach avoids toggling in and out of edit mode, changing the context object ...  etc.  An alternative for execute:

import bpy
import bmesh

context = bpy.context

distance = 0.0 # remove doubles tolerance.
if True: #def execute(self, context):

    meshes = set(o.data for o in context.selected_objects
                      if o.type == 'MESH')

    bm = bmesh.new()

    for m in meshes:
        bm.from_mesh(m)
        bmesh.ops.remove_doubles(bm, verts=bm.verts, dist=distance)
        bm.to_mesh(m)
        m.update()
        bm.clear()

    bm.free()