Propagate *args and **kwargs to open() and change definition

of open() to accept *args and **kwargs.

This will break derivations of this class.

Alternatively we could use inspect.getargspec(self.open)
to see if it has 'varargs' and 'keywords' defined to maintain
backwards compatibility.